Wie kann ich eine Datei mit DOS-Befehlen in eine möglicherweise noch nicht vorhandene Verzeichnisstruktur kopieren? Ich muss in der Lage sein, die Erstellung des Verzeichnispfads zum Speicherort der Zieldatei zu erzwingen, wenn dieser Speicherort noch nicht vorhanden ist.
Zum Beispiel gibt es bereits eine file.txt an diesem Ort:
C:\file.txt
Und ich möchte es kopieren
C:\example\new\path\to\copy\of\file\file.txt
aber zu diesem Zeitpunkt
C:\example\
und alle Unterverzeichnisse können vorhanden sein oder noch nicht.
Grundsätzlich suche ich einen Befehl "Kopieren und ggf. Zielpfad erstellen". Was würden Sie empfehlen, um dies zu erreichen?
Windows command line
im Titel / Text zusammen mit den Tags windows und command-line verwenden (beachte, dass cmd.exe ein Tag-Synonym für command-line ist ). Das Tag ms-dos sollte entfernt werden. und das tag dos sollte unter keinen umständen verwendet werden.Antworten:
Ja, das ist xcopy . So sieht es aus:
XCOPY Infos unter
Möglicherweise möchten Sie auch ROBOCOPY im XP Resource Kit und Standard in Vista, Windows 7 und Server 2008 untersuchen.
quelle
echo f |
mit xcopy, um diese Aufforderung automatisch zu beantworten.Ich habe versucht mit etwas wie:
Aber es würde mich fragen, ob es eine Datei oder ein Verzeichnis war. Da ich das in einer Batch-Datei mit 40000 Dateien hatte, wäre es unpraktisch. Diese Lösung löst mein Problem nur teilweise: Sie erstellt die Verzeichnisstruktur, erfordert jedoch Benutzerinteraktion. Ich habe hier die Lösung für mein Problem gefunden:
https://stackoverflow.com/questions/4283312/batch-file-asks-for-file-or-folder
Welches ist im Grunde ein "*" am Ende der Zieldatei hinzuzufügen:
BEARBEITEN: Wie von @romkyns angegeben, kann es zu unerwünschten Ergebnissen kommen, wenn Sie Dateien mit demselben Namen und etwas anderem (wie 'file.txt.bak') haben. Im selben Thread, den Sie oben gepostet haben, leitet eine andere Lösung "echo f" an Ihren Befehl weiter:
Wo Sie das "f" für jeden Buchstaben ersetzen sollten, den Ihr System für die Datei verwendet, falls Sie ihn in einer anderen Sprache verwenden.
quelle
file.txt.bak
natürlich nur, wenn es keine im Verzeichnis gibt. Dies kann jedoch in einigen Szenarien funktionieren.echo f |
brauchen Sie das Trailing nicht mehr*
.DOS, wow! Auf jeden Fall verwenden Sie den Befehl XCOPY .
quelle
Testen Sie mithilfe von
copy
oderxCopy
, um einen Fehlercopy
oder eine Eingabeaufforderung von zu vermeidenxCopy
, ob der erforderliche Ordner vorhanden ist, und erstellen Sie ihn bei Bedarf:oder kombinieren Sie die Befehle mit
&&
in einer Befehlszeile:Das Gleiche kann man mit machen
move
anstatt mitcopy
. Diese Technik habe ich aus einer StackOverflow- Antwort über den Umgang damit gelerntmove
.quelle