Batch - beim Aus- bzw. Einlesen von Pfadangaben aus einer ext. Datei macht der Unterstrich im Pfadnamen Probleme!?
alter Newbie, halbwegs fit in PHP, freut sich über Antworten ... und die Qualität dieses Forums hier ...
Ich schreibe ein Batch-Backup-Programm (danke, ich weiß, es gibt robocopy ... aber ich will es selbst lernen), bei der in einer ext. txt-Datei div. Variablen (Email, Zielpfad, zu sichernde Ordner) etc. drin stehen.
Einer dieser zu sichernden Ordner "heißt" (z.B.):
D.\Dokumente und Einstellungen\AsusUpdate_V4512
Bei dem Versuch mit XCOPY werden zwar alle Dateien aus o.g. Pfad/Ordner sauber kopiert, der Ordner selbst aber ("AsusUpdate_V4512") wird jetzt im Zielverzeichnis zu "V4512" verstümmelt. Ich vermute, es liegt am Unterstrich!?
Und das verstehe ich nicht, da ich den Ordner in meinem Batch mit " " als String verarbeite!?
Wo ist mein Denkfehler?
Ich schreibe ein Batch-Backup-Programm (danke, ich weiß, es gibt robocopy ... aber ich will es selbst lernen), bei der in einer ext. txt-Datei div. Variablen (Email, Zielpfad, zu sichernde Ordner) etc. drin stehen.
Einer dieser zu sichernden Ordner "heißt" (z.B.):
D.\Dokumente und Einstellungen\AsusUpdate_V4512
Bei dem Versuch mit XCOPY werden zwar alle Dateien aus o.g. Pfad/Ordner sauber kopiert, der Ordner selbst aber ("AsusUpdate_V4512") wird jetzt im Zielverzeichnis zu "V4512" verstümmelt. Ich vermute, es liegt am Unterstrich!?
Und das verstehe ich nicht, da ich den Ordner in meinem Batch mit " " als String verarbeite!?
Wo ist mein Denkfehler?
@echo off & setlocal enabledelayedexpansion
rem hier kommen div. Abfragen etc ... die haben mit meinem Problem aber nix zu tun
rem ab Zeile 32 in der "einstellungen.txt" stehen untereinander, ohne Anführungszeichen und ohne Backslash am Ende, die zu sichernden Ordner.
for /f "tokens=* delims= skip=32" %%e in (einstellungen.txt) do (
rem %ZIEL% ist ebenfalls in einstellungen.txt festgelegt und wird weiter oben ausgelesen
XCOPY "%%e" "%ZIEL%" /D /E /Y /I /H /R >%temp%\log.log
rem hier kommt dann noch das errolevel-handling usw ... erstaunlicherweise wird hier mit %%e der "richtige" und vollständige Ordner bzw. Pfad ausgegeben
)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 171465
Url: https://administrator.de/forum/batch-beim-aus-bzw-einlesen-von-pfadangaben-aus-einer-ext-datei-macht-der-unterstrich-im-pfadnamen-probleme-171465.html
Ausgedruckt am: 22.04.2025 um 11:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo klarname und willkommen im Forum!
Da der Ordnername ja am Ziel nicht stimmt, wäre es schon relevant, die Zuweisung an die Variable %ZIEL% auch darzustellen (und das am besten mit passender ) ...
Die Schleife würde ich übrigens eher so schreiben:
und die "
Grüße
bastla
Da der Ordnername ja am Ziel nicht stimmt, wäre es schon relevant, die Zuweisung an die Variable %ZIEL% auch darzustellen (und das am besten mit passender ) ...
Die Schleife würde ich übrigens eher so schreiben:
for /f "skip=32 delims=" %%e in (einstellungen.txt) do (
xcopy
"-Schalter lassen sich auch am Stück angeben:XCOPY "%%e" "%ZIEL%" /DEYKIHR >%temp%\log.log
bastla
Aloha, ...
... wir dafür aber immer noch eine Begrüßung, einen Gruß und T-Mos oftmals angesprochene Ross & Reiter, die sich, wie bastla bereits genannt hat, in der Ausgabe von z.B.
greetz André
langsam aber sicher müssen die Leute doch einmal lernen, wie man grüßt und dass es eine in rot-dargestellte Formatierungshilfe gibt *grml*
P.S.: Arbeite er wirklich mit
P.P.S.: Um das nachvollziehen zu können, habe ich den Kopiervorgang einfach mal nachgestellt und das Resultat: Es wird kein Ordner angelegt, sondern nur die Dateien aus dem Ordner
Suche nicht unbedingt eine Lösung
... wir dafür aber immer noch eine Begrüßung, einen Gruß und T-Mos oftmals angesprochene Ross & Reiter, die sich, wie bastla bereits genannt hat, in der Ausgabe von z.B.
%Ziel%
wiederfinden können ...greetz André
langsam aber sicher müssen die Leute doch einmal lernen, wie man grüßt und dass es eine in rot-dargestellte Formatierungshilfe gibt *grml*
P.S.: Arbeite er wirklich mit
D.\Dokumente und Einstellungen\AsusUpdate_V4512
? Ich, als Windows-Betriebssystem, würde jetzt einen Ordner D. im aktuellen Verzeichnis suchen - aber ich nehme an, es ist nur ein Typo auf die man aber gerade in Sachen Batch & Co. akribisch achten sollteP.P.S.: Um das nachvollziehen zu können, habe ich den Kopiervorgang einfach mal nachgestellt und das Resultat: Es wird kein Ordner angelegt, sondern nur die Dateien aus dem Ordner
%%e
ins %Ziel%
kopiert, nur mit %Ziel%\%%~ne wird da bei mir ein Verzeichnis angelegt
Aloha,
also wie oben im P.P.S. angemerkt, wird rein mit
ohne überflüssige Datei:
greetz André
P.S.: Welches OS?
edit: Zielsetzung als Code
P.P.S.: Hm, auch mit der neuen Zahl, tritt dieses Phänomen bei mir (XP x86) nicht auf, allerdings funktioniert bei mir auch bastlas
also wie oben im P.P.S. angemerkt, wird rein mit
%Ziel%
bei mir gar kein Verzeichnis angelegt, sondern die Dateien ins %Ziel%
-Verzeichnis kopiert.for /f "skip=32 delims="
funktioniert einwandfrei ... und deine Zielsetzung lässt sich auch optimaler setzen for /f "tokens=1* delims=:" %%s in ('findstr /n "^" "einstellungen.txt"^|findstr /B "10:"') do set "Ziel=%%t"
greetz André
P.S.: Welches OS?
edit: Zielsetzung als Code
P.P.S.: Hm, auch mit der neuen Zahl, tritt dieses Phänomen bei mir (XP x86) nicht auf, allerdings funktioniert bei mir auch bastlas
for
-Anweisung einwandfrei
Hallo klarname!
Vorweg: Ebenfalls unter XP getestet tut bei mir ein
genau, was es soll - daher wäre es sinnvoll, per "
Zu
Generell würde ich die "einstellungen.txt" (am Beispiel Deiner Zeile 10) eher so aufbauen:
dann kannst Du nämlich vorweg mit einer einfachen Schleife
alle benötigten Werte gleich in Variablen schreiben lassen, wobei es zusätzlich sinnvoll sein könnte, die Variablennamen mit einem einheitlichen Präfix zu versehen, also zB "%Bck_Ziel%" anstelle von "%Ziel%" zu verwenden, da sich diese dann leichter am Stück bearbeiten lassen (um sie zB mit
in eine neue "Einstellungsdatei" zu übertragen).
Grüße
bastla
Vorweg: Ebenfalls unter XP getestet tut bei mir ein
xcopy "D:\Dokumente und Einstellungen\pbid\Eigene Dateien\AsusUpdt_V71401" "G:\Backup" /dehikry
echo on
" in der ersten Zeile einmal nachzusehen, wie dieser Befehl (mit aufgelösten Variablen) bei Dir aussieht (dazu natürlich den Batch aus der CMD-Shell starten) ...Zu
auf die (unbegrenzten) *-tokens zu verzichten, führt dazu, dass gar nix mehr kopiert wird!!?
"tokens=*" wird nicht benötigt, wenn durch "delims=
" festgelegt wurde, dass keine Zerlegung erfolgen soll (kein Trennzeichen > keine Teile).Generell würde ich die "einstellungen.txt" (am Beispiel Deiner Zeile 10) eher so aufbauen:
Ziel=G:\Backup
for /f "delims=" %%i in (einstellungen.txt) do set "%%i"
set Bck_>einstellungen_neu.txt
Grüße
bastla