fellinga09
Goto Top

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..:

for /F "tokens=1 delims==" %%i IN (Sicherung.ini) do (  
echo %%i
)
%%i ergibt folgendes:

Musik
Video
Bilder


for /F "tokens=2 delims==" %%g IN (Sicherung.ini) do (  
echo %%g
)
%%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

Content-ID: 180544

Url: https://administrator.de/contentid/180544

Ausgedruckt am: 26.11.2024 um 09:11 Uhr

60730
60730 15.02.2012 um 00:42:47 Uhr
Goto Top
moin,

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ß
rubberman
rubberman 15.02.2012 um 02:02:06 Uhr
Goto Top
Hallo FELLINGA09,

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
FELLINGA09
FELLINGA09 15.02.2012 um 08:08:52 Uhr
Goto Top
Danke TimoBeil!

mit:
@echo off
set "extsich=C:\Save"  

for /F "tokens=1,2 delims==" %%i IN (Sicherung.ini) do (  
robocopy "%%j" "%extsich%\%%i" /mir  
)
Funktionierts perfekt!!!
FELLINGA09
FELLINGA09 15.02.2012 um 08:11:20 Uhr
Goto Top
Dankeschön..das muss ich heute mal genauer unter die Lupe nehmen!!
Skyemugen
Skyemugen 15.02.2012 um 08:48:26 Uhr
Goto Top
Aloha,

und wenn du schon etwas genauer unter die Lupe nimmst, dann bitte auch unsere Formatierungshilfe bezüglich ##blue|## Formatierung.

Danke!

greetz André

ja, kann man auch im Nachhinein editieren