Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Zahl am Ende einer Variable hochzählen und dann neu befüllen

Frage Entwicklung Batch & Shell

Mitglied: el3ment

el3ment (Level 1) - Jetzt verbinden

14.06.2012 um 12:20 Uhr, 3563 Aufrufe, 6 Kommentare

Hallo, ich möchte mit der Batch Datei auf mehreren Rechnern prüfen ob es eine bestimmte Datei gibt.
Dabei habe ich das Problem, dass die Variable "rechner" immer nur rechner_1, rechner_2 usw. ist und nicht der rechnername welcher oben definiert ist. ist denke ich nichts großes aber ich komme einfach nicht darauf.

01.
@echo off 
02.
set count=1 
03.
set rechneranzahl=4 
04.
 
05.
set dateipfad=c$\Programme\sap\saplogon.ini 
06.
set rechner_1=rechnername_bli 
07.
set rechner_2=rechnername_bla 
08.
set rechner_3=rechnername_blubb 
09.
 
10.
 
11.
:loop 
12.
set rechner=rechner_%count% 
13.
 
14.
IF EXIST "\\%rechner%\%dateipfad%" (echo %time%: %rechner%: Datei vorhanden  >> c:\temp\log.log) ELSE (echo %time%: %rechner%: Datei nicht vorhanden >> c:\temp\log.log) 
15.
 
16.
set /a COUNT=%COUNT%+1 
17.
if (%COUNT%) == (%rechneranzahl%) goto END 
18.
goto loop 
19.
 
20.
 
21.
:end
Mitglied: bastla
14.06.2012, aktualisiert um 13:24 Uhr
Hallo el3ment und willkommen im Forum!

Versuch mal folgende Zeile 12:
call set "rechner=%%rechner_%count%%%"
Außerdem genügt als Zeile 16
set /a count+=1
Grüße
bastla
Bitte warten ..
Mitglied: el3ment
14.06.2012, aktualisiert um 14:47 Uhr
vielen dank, allerdings wird so auch nur %rechner_1% ausgegeben.

danke für den hinweis!
Bitte warten ..
Mitglied: bastla
14.06.2012, aktualisiert um 15:37 Uhr
Hallo el3ment!

Kann ich nicht nachvollziehen ...

Gemeint hatte ich jedenfalls (noch leicht adaptiert):
01.
@echo off & setlocal 
02.
set /a count=1 
03.
set /a arechneranzahl=3 
04.
 
05.
set "dateipfad=c$\Programme\sap\saplogon.ini" 
06.
set "rechner_1=rechnername_bli" 
07.
set "rechner_2=rechnername_bla" 
08.
set "rechner_3=rechnername_blubb" 
09.
 
10.
 
11.
:loop 
12.
call set "rechner=%%rechner_%count%%%" 
13.
 
14.
IF EXIST "\\%rechner%\%dateipfad%" (echo %time%: %rechner%: Datei vorhanden  >> c:\temp\log.log) ELSE (echo %time%: %rechner%: Datei nicht vorhanden >> c:\temp\log.log) 
15.
 
16.
set /a count+=1 
17.
if %count% leq %rechneranzahl% goto :loop
Grüße
bastla
Bitte warten ..
Mitglied: el3ment
14.06.2012 um 15:40 Uhr
hatte den call Befehl nicht übernommen, der war es wohl!

Klasse, funktionier!

Vielen Dank!!!!
Bitte warten ..
Mitglied: bastla
14.06.2012, aktualisiert um 15:49 Uhr
Hallo el3ment!

Freut mich ...

BTW: Von diesem "Pseudo-Array" mit indizierten Variablen halte ich übrigens eher wenig - das ließe sich (da ja ohnehin alle Rechner durchlaufen werden sollen) mit einer "for"-Schleife eleganter lösen, wobei die Rechner entweder in einer eigenen Textdatei aufgelistet werden oder (im Stil von Ur-Basic-DATA-Zeilen) auch im Batch selbst stehen könnten:
01.
@echo off & setlocal 
02.
set "dateipfad=c$\Programme\sap\saplogon.ini" 
03.
set "log=c:\temp\log.log" 
04.
 
05.
::DATA rechnername_bli 
06.
::DATA rechnername_bla 
07.
::DATA rechnername_blubb 
08.
 
09.
for /f "tokens=1*" %%i in ('findstr /b "::DATA" "%~f0"') do call :ProcessComputer "%%j" 
10.
goto :eof 
11.
 
12.
:ProcessComputer 
13.
(if  exist "\\%~1\%dateipfad%" ( 
14.
    echo %time%: %rechner%: Datei vorhanden 
15.
) ELSE ( 
16.
    echo %time%: %rechner%: Datei nicht vorhanden 
17.
))>>"%log%" 
18.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: el3ment
14.06.2012 um 16:07 Uhr
Wow, bin begeistert!

Habe davon ehrlich gesagt keine Ahnung, wollte einfach nur schnell ein kleines Script haben und nich manuel auf jeden Rechner einzeln schauen... :D

Das sieht natürlich professionell aus...
Bitte warten ..
Ähnliche Inhalte
Windows Update
gelöst SBS 2008: WSUS deinstallieren (und wieder neu installieren) (9)

Frage von diwaffm zum Thema Windows Update ...

Windows Netzwerk
Domäne neu, Gruppenrichtlinien erstellen: das Rad neu erfinden? (5)

Frage von Dude-from-R00t zum Thema Windows Netzwerk ...

Windows Server
Windows Server 2012R2 Automatische-Reparatur Schleife - NEU (46)

Frage von hans-tu-was zum Thema Windows Server ...

Windows Update
gelöst WSUS 3.0 lädt seit Wochen abgelehnte Updates neu herunter (5)

Frage von Atti58 zum Thema Windows Update ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(6)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(40)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Windows 10
gelöst Windows 10 Home "Netzlaufwerk nicht bereit" (19)

Frage von Oggy01 zum Thema Windows 10 ...

Exchange Server
gelöst RU 17 Exchange 2010 . Erfahrungen? (10)

Frage von keine-ahnung zum Thema Exchange Server ...

Datenbanken
gelöst MySQL Zeiterfassungs-Problematik (wer ist eingecheckt) (9)

Frage von NativeMode zum Thema Datenbanken ...

Windows Server
Festplatten Ruhezustand Windows Server 2016 (8)

Frage von ahaeuser zum Thema Windows Server ...