Ich habe eine *otf-Datei, die ich in alle Unterverzeichnisse des übergeordneten Ordners kopieren möchte. Folgendes habe ich versucht.
for /R %%x in (.) do copy "file.otf" "%%x"
Das funktioniert größtenteils, hinterlässt aber auch eine Kopie im übergeordneten Ordner. Ich hätte gerne eine Lösung dafür, sodass der Stapel nur in alle Unterverzeichnisse kopiert.
Antwort1
Ich konnte Ihren Code unter Microsoft Windows [Version 10.0.17134.648] nicht zum Laufen bringen. Der folgende Code funktioniert.
prüfen:
for /f "tokens=*" %%x in ('dir /b /s /ad "path-to-parent-folder-with-double-quotes-if-there-is-a-space-in-the-path\"') do echo copy /y "file.otf" to "%%x\"
Kopieren:
for /f "tokens=*" %%x in ('dir /b /s /ad "path-to-parent-folder-with-double-quotes-if-there-is-a-space-in-the-path\"') do copy /y "file.otf" "%%x\"
Datei.otf aus Unterverzeichnissen löschen:
for /f "tokens=*" %%x in ('dir /b /s /ad "path-to-parent-folder-with-double-quotes-if-there-is-a-space-in-the-path\"') do del /q "%%x\file.otf"
tokens=* berücksichtigt Leerzeichen im Pfad/Dateinamen
"tokens=*"
dir /b /s /ad kopiert die Datei in ein Verzeichnis und nicht in eine Datei. Ohne /ad überschreibt file.otr alle Dateien im Verzeichnis.Verwenden Sie „copy“ statt „copy /y“, wenn Sie Bedenken haben.
dir /b /s /ad
copy /y überschreibt file.otr ohne um Erlaubnis zu fragen. Sie müssen es sicher ein paar Mal versuchen, bevor Sie zufrieden sind, dass es funktioniert.
copy /y
Anstatt Ihren Code zu „reparieren“, warum löschen Sie nicht einfach file.otr im übergeordneten Verzeichnis?
del /q file.otr