У меня есть файл *otf, который я хотел бы скопировать во все подкаталоги родительской папки. Это то, что я попытался сделать.
for /R %%x in (.) do copy "file.otf" "%%x"
Это работает в большинстве случаев, но также оставляет копию в родительской папке. Я хотел бы исправить это, чтобы пакет копировал только во все подкаталоги.
решение1
Мне не удалось заставить ваш код работать на Microsoft Windows [Версия 10.0.17134.648]. Следующий код работает.
тест:
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\"
копия:
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\"
удалить file.otf из подкаталогов:
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=* учитывает пробелы в пути/имени файла
"tokens=*"
dir /b /s /ad копирует файл в каталог, а не в файл. Без /ad file.otr перезапишет все файлы в каталоге.Если вас что-то беспокоит, используйте copy вместо copy /y.
dir /b /s /ad
copy /y перезаписывает file.otr без запроса разрешения. Вам придется попробовать пару раз, прежде чем вы будете удовлетворены тем, что это работает.
copy /y
Вместо того, чтобы «исправлять» свой код, почему бы вам просто не удалить file.otr в родительском каталоге?
del /q file.otr