Zahl am Ende einer Variable hochzählen und dann neu befüllen
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.
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.
@echo off
set count=1
set rechneranzahl=4
set dateipfad=c$\Programme\sap\saplogon.ini
set rechner_1=rechnername_bli
set rechner_2=rechnername_bla
set rechner_3=rechnername_blubb
:loop
set rechner=rechner_%count%
IF EXIST "\\%rechner%\%dateipfad%" (echo %time%: %rechner%: Datei vorhanden >> c:\temp\log.log) ELSE (echo %time%: %rechner%: Datei nicht vorhanden >> c:\temp\log.log)
set /a COUNT=%COUNT%+1
if (%COUNT%) == (%rechneranzahl%) goto END
goto loop
:end
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 186481
Url: https://administrator.de/contentid/186481
Ausgedruckt am: 25.11.2024 um 17:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo el3ment!
Kann ich nicht nachvollziehen ...
Gemeint hatte ich jedenfalls (noch leicht adaptiert):
Grüße
bastla
Kann ich nicht nachvollziehen ...
Gemeint hatte ich jedenfalls (noch leicht adaptiert):
@echo off & setlocal
set /a count=1
set /a arechneranzahl=3
set "dateipfad=c$\Programme\sap\saplogon.ini"
set "rechner_1=rechnername_bli"
set "rechner_2=rechnername_bla"
set "rechner_3=rechnername_blubb"
:loop
call set "rechner=%%rechner_%count%%%"
IF EXIST "\\%rechner%\%dateipfad%" (echo %time%: %rechner%: Datei vorhanden >> c:\temp\log.log) ELSE (echo %time%: %rechner%: Datei nicht vorhanden >> c:\temp\log.log)
set /a count+=1
if %count% leq %rechneranzahl% goto :loop
bastla
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 "
Grüße
bastla
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:@echo off & setlocal
set "dateipfad=c$\Programme\sap\saplogon.ini"
set "log=c:\temp\log.log"
::DATA rechnername_bli
::DATA rechnername_bla
::DATA rechnername_blubb
for /f "tokens=1*" %%i in ('findstr /b "::DATA" "%~f0"') do call :ProcessComputer "%%j"
goto :eof
:ProcessComputer
(if exist "\\%~1\%dateipfad%" (
echo %time%: %rechner%: Datei vorhanden
) ELSE (
echo %time%: %rechner%: Datei nicht vorhanden
))>>"%log%"
goto :eof
bastla