Ein weiterer möglicher Trick ist die Vorerstellung einer Zieldatei oder eines Zielordners. Dann xcopy
würde ich nicht fragen, weil es schon wüsste. Ich würde nicht sagen, dass diese Lösung besser ist als die oben genannten, sie ist einfach anders und daher möchte ich, dass sie auch hier ist.
Meine einfache Aufgabe bestand darin, eine Reihe von Dateien aus einem Netzwerkordner in einen lokalen Ordner zu kopieren.
- AAAAA \ Disk1.zip => AAAAA.zip
- BBBBB \ Disk1.zip => BBBBB.zip
- und so weiter
Ursprünglicher Befehl (eine Zeile einer etwas längeren .cmd-Skriptdatei) war
for /d /r %SRC% %%1 in (*.*) do xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip
Dies führt jedoch zu vielen dieser (F) ile- oder (D) -Rectory- Fragen bei der ersten Verwendung mit neuen (noch nicht zuvor getroffenen) Dateien. Vor allem, wenn ich einen neuen leeren Zielordner fülle.
Dann die echo F
und Asterisk Hack Antworten - sie funktionieren auch gut.
for /d /r %SRC% %%1 in (*.*) do echo f | xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip
for /d /r %SRC% %%1 in (*.*) do xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip*
Nun wäre eine weitere mögliche Lösung explizit das ERSTELLEN des Zielordners der Datei, bevor der xcopy
Befehl ausgegeben wird .
Für eine Datei wäre es zum Beispiel:
echo. > C:\Temp\TargetPlace xcopy Source C:\Temp\TargetPlace
Leider verfügt Windows standardmäßig nicht über einen touch
Befehl. Dies ist sehr nützlich, um eine 0-Byte-Dummy-Datei zu erstellen.
Für Ordner wäre es zum Beispiel:
mkdir C:\Temp\TargetPlace xcopy Source C:\Temp\TargetPlace
Zugegeben, es benötigt zwei Befehle - zwei Zeilen - im CMD-Shell-Skript. Sie können nicht mehrere Befehle in CMD für Schleife setzen leicht, aber hier können Sie Rohr der Befehle zusammen (das Bereitstellen xcopy
würden tatsächlich jede Benutzereingabe lesen, wenn den spezifischen Befehl ausgegeben, die in Zukunft Windows - Versionen zum Beispiel ändern könnten, wenn auch unwahrscheinlich).
Für Ordner:
for /d /r %SRC% %%1 in (*.*) do md %~dp0%%~nx1.zip | xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip
Für Dateien:
for /d /r %SRC% %%1 in (*.*) do echo. >%~dp0%%~nx1.zip | xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip
Dieser letzte Befehl hat ZWEI Umleitungen für die Ausgabe zwischen - echo.
> ... | xcopy
. Aber zumindest in .cmd
Dateien von Windows 8.1 funktioniert es.