Ich schreibe eine kleine Batchdatei, um mein C#-Projekt auf ein anderes Laufwerk zu kopieren. Ich verwende sie, XCOPY
um einen ganzen Ordner zu kopieren (wir haben noch einige XP-Rechner, also robocopy
ist das keine Option). Wenn ich die Batchdatei jedoch ausführe, wird mir angezeigt, dass die angegebene DATEI nicht gefunden werden kann (warum nach einer Datei und nicht nach einem Ordner gesucht wird, weiß ich nicht).
Hier ist meine Ordnerstruktur. Ich möchte folder
in den program\dst
Ordner auf dem O
Laufwerk kopieren.
src
-folder
-batchFile.bat
O
-program
--dst
Meine batchFile.bat enthält die folgende Zeile
XCOPY ".\folder" "O:\program\dst" /E
Wenn ich das ausführe, heißt es:
File Not Found - folder
obwohl es definitiv existiert (als Ordner, nicht als Datei).
Antwort1
Wie aus anderen Antworten hervorgeht, .\folder
beginnt die Verwendung im aktuellen Verzeichnis, während Sie den Speicherort der Batchdatei benötigen:
XCOPY "%~dp0folder" "O:\program\dst" /E
Sie könnten cd
zuerst zum Ordner gehen, aber das ist meiner Meinung nach eleganter.
Antwort2
Ich habe das ausprobiert und es funktioniert bei mir. Ich vermute, Sie haben eine Verknüpfung zur Batchdatei erstellt und das Startverzeichnis ist nicht korrekt. Wenn das der Fall ist, sollte das Hinzufügen eines cd
Befehls zum Anfang der Batchdatei, um das Verzeichnis zu ändern, src
das Problem beheben. Alternativ können Sie einen absoluten Pfad folder
anstelle eines relativen Pfads verwenden:
cd "C:\Whatever\src"
XCOPY ".\folder" "O:\program\dst" /E
oder
XCOPY "C:\Whatever\src\folder" "O:\program\dst" /E
Antwort3
Fügen Sie in Ihrem Skript den folgenden Befehl ganz am Anfang Ihrer CMD-Datei ein:
echo "%cd%"
Beobachten Sie dann, was dieser Befehl erzeugt.
Wenn der vollständige Pfad Ihres „Ordner“-Verzeichnisses „C:\ABC\Ordner“ lautet, sollte der Befehl „echo „%cd%“ die Ausgabe „C:\ABC“ liefern. Wenn Sie jedoch etwas anderes sehen, löst Ihr XCOPY-Befehl den Fehler „Datei nicht gefunden“ aus. Das ist normal, da XCOPY nicht feststellen kann, ob es sich bei „Ordner“ um ein Verzeichnis oder eine Datei handelt, und davon ausgeht, dass es sich standardmäßig um eine Datei handelt.