Batchfile FOR
Guten Abend,
ich hab da ein Problem mit einem Batchfile...
Erklärung:
Ich habe eine Sicherung.ini Datei mit folgendem Inhalt: (der Aufbau muss leider so sein!!!)
Musik=C:\Program Files\Musik
Video=C:\film\Video
Bilder=C:\Hugo\Bilder
Nun möchte ich in einer Batch das ganze auslesen und per robocopy wegsichern.
Das ganze wollte ich mit FOR lösen, nur fehlt mir irgendwo noch die Lösung.
Einzeln auslesen funktioniert ja super..:
%%i ergibt folgendes:
Musik
Video
Bilder
%%g ergibt folgendes:
C:\Program Files\Musik
C:\film\Video
C:\Hugo\Bilder
Jetzt müsste ich mit diesen Daten in der Batch natürlich irgendwo weiter machen, und genau da stehe ich...
Eigentlich wäre mir eine Lösung ala:
robocopy "%%g" "C:\Save\%%i" /MIR
am liebsten. Nur kann ich ja nicht beide Parameter in einem FOR verwenden, oder?
Das Ergebnis sollte dann natürlich folgendes sein:
"C:\Program Files\Musik" wird nach "C:\Save\Musik" gesichtert
"C:\film\Video" wird nach "C:\Save\Video" gesichtert
"C:\Hugo\Bilder" wird nach "C:\Save\Bilder" gesichtert
Würde mich über jeden Tipp freuen, die Sicherung.ini darf allerdings, wie bereits erwähnt, nicht verändert werden und es muss per *.bat oder *.cmd erledigt werden!!
Danke
Eine Frage hätte ich noch!
Kann ich mit nem Batch sektions auslesen?
Also wenn die SIcherungs ini z.B. so aussehen würde:
[Test]
1=Ding
2=Dong
[Ordner]
Musik=C:\Program Files\Musik
Video=C:\film\Video
Bilder=C:\Hugo\Bilder
ich hab da ein Problem mit einem Batchfile...
Erklärung:
Ich habe eine Sicherung.ini Datei mit folgendem Inhalt: (der Aufbau muss leider so sein!!!)
Musik=C:\Program Files\Musik
Video=C:\film\Video
Bilder=C:\Hugo\Bilder
Nun möchte ich in einer Batch das ganze auslesen und per robocopy wegsichern.
Das ganze wollte ich mit FOR lösen, nur fehlt mir irgendwo noch die Lösung.
Einzeln auslesen funktioniert ja super..:
for /F "tokens=1 delims==" %%i IN (Sicherung.ini) do (
echo %%i
)
Musik
Video
Bilder
for /F "tokens=2 delims==" %%g IN (Sicherung.ini) do (
echo %%g
)
C:\Program Files\Musik
C:\film\Video
C:\Hugo\Bilder
Jetzt müsste ich mit diesen Daten in der Batch natürlich irgendwo weiter machen, und genau da stehe ich...
Eigentlich wäre mir eine Lösung ala:
robocopy "%%g" "C:\Save\%%i" /MIR
am liebsten. Nur kann ich ja nicht beide Parameter in einem FOR verwenden, oder?
Das Ergebnis sollte dann natürlich folgendes sein:
"C:\Program Files\Musik" wird nach "C:\Save\Musik" gesichtert
"C:\film\Video" wird nach "C:\Save\Video" gesichtert
"C:\Hugo\Bilder" wird nach "C:\Save\Bilder" gesichtert
Würde mich über jeden Tipp freuen, die Sicherung.ini darf allerdings, wie bereits erwähnt, nicht verändert werden und es muss per *.bat oder *.cmd erledigt werden!!
Danke
Eine Frage hätte ich noch!
Kann ich mit nem Batch sektions auslesen?
Also wenn die SIcherungs ini z.B. so aussehen würde:
[Test]
1=Ding
2=Dong
[Ordner]
Musik=C:\Program Files\Musik
Video=C:\film\Video
Bilder=C:\Hugo\Bilder
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 180544
Url: https://administrator.de/contentid/180544
Ausgedruckt am: 26.11.2024 um 09:11 Uhr
5 Kommentare
Neuester Kommentar
moin,
kannst du bitte deine Zeilen mithilfe der Formatierungshilfe verhybschen?
Apropos "Hilfe"...
Gruß
kannst du bitte deine Zeilen mithilfe der Formatierungshilfe verhybschen?
Apropos "Hilfe"...
for /F "tokens=1,2 delims==" %a in (Sicherung.ini) Do echo %a--%b
Und zu deiner Zusatzfrage - theoretisch möglich ist das, praktisch gäbe es da ein Problem....Ich habe eine Sicherung.ini Datei mit folgendem Inhalt: (der Aufbau muss leider so sein!!!)
Musik=C:\Program Files\Musik
Video=C:\film\Video
Bilder=C:\Hugo\Bilder
die Sicherung.ini darf allerdings, wie bereits erwähnt, nicht verändert werden.
Gruß
Hallo FELLINGA09,
Batch ist ungeeignet um INI Dateien sicher zu parsen.
Laaangsaaames Workaround:
Grüße
rubberman
Batch ist ungeeignet um INI Dateien sicher zu parsen.
Laaangsaaames Workaround:
@echo off &setlocal
:: Settings
set "ini=Sicherung.ini"
set "section=Ordner"
:: Werte lesen
set "key=Musik"
call :readINI
echo %foundKey% - %foundVal%
set "key=Video"
call :readINI
echo %foundKey% - %foundVal%
pause
goto :eof
:::::::::::::::::::::::::::::::::::::::::
:readINI
for /l %%i in (1 1 4) do set "n%%i="
set "line="&set "foundKey="&set "foundVal="
:: existiert die Datei?
if not exist "%ini%" echo [error] &goto :eof
:: wie viele Zeilen hat die Datei?
for /f %%i in ('type "%ini%"^|find /c /v ""') do set /a n1=%%i
if not defined n1 echo [error] &goto :eof
:: in welcher Zeile fängt die Sektion an?
for /f "delims=:" %%i in ('type "%ini%"^|findstr /nbc:"[%section%]"') do if not defined n2 set /a n2=%%i
if not defined n2 echo [error] &goto :eof
:: wo findet sich die nächste Sektion?
for /f "delims=:" %%i in ('^<"%ini%" more +%n2%^|findstr /rnbc:"\[..*\]"') do if not defined n3 set /a n3=%%i
if not defined n3 set /a n3=n1-n2
:: wo findet sich der Schlüssel?
for /f "delims=:" %%i in ('^<"%ini%" more +%n2%^|findstr /nbc:"%key%="') do (
if not defined n4 (
if %%i leq %n3% set /a n4=%%i+n2
)
)
if not defined n4 echo [error] &goto :eof
:: über die INI iterieren
<"%ini%" (
for /l %%i in (1 1 %n4%) do (
set /p "line="
)
)
)
for /f "tokens=1* delims==" %%i in ("%line%") do (set "foundKey=%%i"&set "foundVal=%%j")
goto :eof
Grüße
rubberman