Batch File - Zeile auslesen aus Datei und verändern (mit langen Dateinamen)
[Edit] Beitrag auf "Gelöst" gesetzt am 5.3. 2006 Biber [/Edit]
Hallo Leute!
Ich habe ein Problem mit meinen Batch File ... es checkt irgendwie nicht die Leerzeichen ... und die Sonderzeichen ...
Verwendet wird ein Windows 2000/XP/2003
Vorgabe ist ein Text File namens pst.txt
=== Inhalt Anfang ===
D:\BACKUP\Daten\Bereiche\Pawlik\xuser\PC\pawlik\Local Settings\Anwendungsdaten\Microsoft\Outlook\archive.pst
D:\BACKUP\Daten\Bereiche\Reithofer\Outlook\CDC.pst
D:\BACKUP\Daten\Bereiche\Reithofer\Outlook\Kontakte.pst
D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2004.pst
D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2005.pst
=== Inhalt Ende ===
Das Batch File soll die Datei Zeile für Zeile einlesen und abändern für einen Kopierjob als SET Varaiblen (mit oder ohne "" ist egal)
Quelle = D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2004.pst
Ziel = Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2004.pst
Derzeitiges Ergebnis ...
Quelle "D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up"
Ziel "Bereiche\Schneeweiss\back_up""
Das Problem ist, das er nicht mit den Leerzeichen zurechtkommt und einfach abschneidet.
Zusätzlich sollen auch die Sonderzeichen ß passen und die "
=== Meine Batch Datei Anfang ===
@echo off
FOR /f %%f IN (pst.txt) DO call :loop "%%f"
goto ende
:loop
set Quelle=%1
Set Ziel="%Quelle:~17%"
echo Quelle %Quelle%
echo Ziel %Ziel%
echo.
rem xcopy %Quelle% %Ziel% /d /y
goto :eof
:ende
pause
=== Meine Batch Datei Ende ===
Kann mir jemand hier helfen?
Danke ganz lieb
windwind12
Hallo Leute!
Ich habe ein Problem mit meinen Batch File ... es checkt irgendwie nicht die Leerzeichen ... und die Sonderzeichen ...
Verwendet wird ein Windows 2000/XP/2003
Vorgabe ist ein Text File namens pst.txt
=== Inhalt Anfang ===
D:\BACKUP\Daten\Bereiche\Pawlik\xuser\PC\pawlik\Local Settings\Anwendungsdaten\Microsoft\Outlook\archive.pst
D:\BACKUP\Daten\Bereiche\Reithofer\Outlook\CDC.pst
D:\BACKUP\Daten\Bereiche\Reithofer\Outlook\Kontakte.pst
D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2004.pst
D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2005.pst
=== Inhalt Ende ===
Das Batch File soll die Datei Zeile für Zeile einlesen und abändern für einen Kopierjob als SET Varaiblen (mit oder ohne "" ist egal)
Quelle = D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2004.pst
Ziel = Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2004.pst
Derzeitiges Ergebnis ...
Quelle "D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up"
Ziel "Bereiche\Schneeweiss\back_up""
Das Problem ist, das er nicht mit den Leerzeichen zurechtkommt und einfach abschneidet.
Zusätzlich sollen auch die Sonderzeichen ß passen und die "
=== Meine Batch Datei Anfang ===
@echo off
FOR /f %%f IN (pst.txt) DO call :loop "%%f"
goto ende
:loop
set Quelle=%1
Set Ziel="%Quelle:~17%"
echo Quelle %Quelle%
echo Ziel %Ziel%
echo.
rem xcopy %Quelle% %Ziel% /d /y
goto :eof
:ende
pause
=== Meine Batch Datei Ende ===
Kann mir jemand hier helfen?
Danke ganz lieb
windwind12
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 26475
Url: https://administrator.de/contentid/26475
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
4 Kommentare
Neuester Kommentar
Na, windwind12,
da sind mehrere kleine Stolpersteinchen drin, aber lösbar ist es...
1. Miniproblem - trailing blanks
In der Textdatei pst.txt (die ja wahrscheinlich auch über eine DIR-Output mit Umleitung erzeugt wird), sind trailing blanks, also überflüssige Leerzeichen am Ende enthalten. Die bringen alles etwas durcheinander.
Also: falls ihr die Textdatei erzeugt mit
Dir /s /b D:\BACKUP\Daten\Bereiche\*.pst >pst.txt
dann nehmt das Leerzeichen vor dem Größerzeichen raus(Minimallösung)
-oder- (advanced) schreibt ein Semikolon am Ende
Dir /s /b D:\BACKUP\Daten\Bereiche\*.pst;>pst.txt
--Problem gelöst-
2. Miniproblem - Anführungszeichen
Die Anführungszeichen...wo setzen, wo explizit wegnehmen
Mein Vorschlag:
FOR /f "delims=" %%f IN (pst.txt) DO call :loop "%%f"
goto ende
:loop
set "Quelle=%~1"
Set "Ziel=%Quelle:~17%"
:: Ziel und Quelle jetzt beide OHNE Anführungszeichen
@echo Quelle: [%Quelle%]
@echo Ziel: [%Ziel%]
echo.
rem xcopy "%Quelle%" "%Ziel%" /d /y
goto :eof
:ende
pause
Dann passt es besser.
Alternativ, falls ihr die Semikolon-Variante nehmt:
FOR /f "delims=;" %%f IN (pst.txt) DO call :loop "%%f"
3. Miniproblem - die Umlaute bzw das "deutsche SZ" bei "Schneeweiß"
- entweder die *.bat- und *.txt -Dateien im gleichen Zeichensatz bearbeiten.
Meistens hilft ein "CHCP 1252" am CMD-Prompt.
Dann "kennt" die CMD.exe die Windows-Umlaute
- oder (mir wäre so ein "meistens" zu wackelig) legt doch gleich die "kurzen" Pfad-und Dateinamen an beim Schreiben der pst.txt.
Dann steht da statt
D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2005.pst
--von Anfang an gleich
D:\BACKUP\Daten\Bereiche\Schnee~1\back_u~1\Schnee~1\Schnee~1.pst
...und ihr habt gar keine Miniprobleme mehr.
HTH Biber
da sind mehrere kleine Stolpersteinchen drin, aber lösbar ist es...
1. Miniproblem - trailing blanks
In der Textdatei pst.txt (die ja wahrscheinlich auch über eine DIR-Output mit Umleitung erzeugt wird), sind trailing blanks, also überflüssige Leerzeichen am Ende enthalten. Die bringen alles etwas durcheinander.
Also: falls ihr die Textdatei erzeugt mit
Dir /s /b D:\BACKUP\Daten\Bereiche\*.pst >pst.txt
dann nehmt das Leerzeichen vor dem Größerzeichen raus(Minimallösung)
-oder- (advanced) schreibt ein Semikolon am Ende
Dir /s /b D:\BACKUP\Daten\Bereiche\*.pst;>pst.txt
--Problem gelöst-
2. Miniproblem - Anführungszeichen
Die Anführungszeichen...wo setzen, wo explizit wegnehmen
Mein Vorschlag:
FOR /f "delims=" %%f IN (pst.txt) DO call :loop "%%f"
goto ende
:loop
set "Quelle=%~1"
Set "Ziel=%Quelle:~17%"
:: Ziel und Quelle jetzt beide OHNE Anführungszeichen
@echo Quelle: [%Quelle%]
@echo Ziel: [%Ziel%]
echo.
rem xcopy "%Quelle%" "%Ziel%" /d /y
goto :eof
:ende
pause
Dann passt es besser.
Alternativ, falls ihr die Semikolon-Variante nehmt:
FOR /f "delims=;" %%f IN (pst.txt) DO call :loop "%%f"
3. Miniproblem - die Umlaute bzw das "deutsche SZ" bei "Schneeweiß"
- entweder die *.bat- und *.txt -Dateien im gleichen Zeichensatz bearbeiten.
Meistens hilft ein "CHCP 1252" am CMD-Prompt.
Dann "kennt" die CMD.exe die Windows-Umlaute
- oder (mir wäre so ein "meistens" zu wackelig) legt doch gleich die "kurzen" Pfad-und Dateinamen an beim Schreiben der pst.txt.
Dann steht da statt
D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2005.pst
--von Anfang an gleich
D:\BACKUP\Daten\Bereiche\Schnee~1\back_u~1\Schnee~1\Schnee~1.pst
...und ihr habt gar keine Miniprobleme mehr.
HTH Biber