Назад | Перейти на главную страницу

Использование команды перемещения с / Y в файле bat

Мне нужно переместить все папки в каталоге с именем Profile.V2 из каталога, а затем я хочу удалить каталог. Я использую для этого файл bat, который ниже, он отлично работает, за исключением случаев, когда папка с таким же именем уже существует в том месте, куда я перемещаю файлы / папки, это приводит к остановке файла bat и приглашению появляется вопрос, можно ли перезаписать папку. У команды перемещения есть аргумент / Y, который перекрывает подсказку, однако, если я помещаю его после слова "move" в моем bat-файле, он не работает. Кто-нибудь может понять, почему и куда он должен идти?

@ECHO OFF
H:
cd Profile.V2
for /f "delims=" %%a in ('dir /b') do (
  move "%%a" H:\
)
RD /S /Q H:\Profile.V2

Большое спасибо Стив

Хорошо. Я бы просто сделал "двигаться / Y . H: \ "Насколько я могу судить, это то же самое, что и цикл for.

/ Y идет сразу после хода и должно быть верхний регистр.

(Официально регистр не учитывается, но по опыту я знаю, что в некоторых системах это имеет значение. Мне так и не удалось выяснить, почему.)

Команда «Переместить» требует, чтобы целевой каталог не существует и потерпит неудачу, если это произойдет. Нет аргументов командной строки, которые могут это исправить.

Вместо этого вы можете рассмотреть этот сценарий:

@ECHO OFF
H:
xcopy h:\Profile.V2 h:\ /s/e/v/y
RD /S /Q H:\Profile.V2

Xcopy скопирует содержимое каталога Profile.V2 в корень диска H: и перезапишет существующие файлы без запроса. Он создаст все каталоги, найденные в profile.v2, включая пустые.

Перемещение содержимого может быть меньшей целью, поскольку ваша команда RD удаляет каталог без проверки.

Для объяснения аргументов командной строки введите:

xcopy /?