Здравствуйте, у меня возник вопрос относительно копирования файлов из определенных папок в другую с помощью командного файла.

У меня есть следующий код:

echo off
set arg1=%1
set "arg2=%~2"
set arg3=%3

FOR /R %arg1% %%G IN (%arg3%) DO (
    COPY %%G %arg2%\tempsrc\%%~nxG
)

Для ввода аргументов:

arg1 = The path where the files are located
arg2 = the output path
arg3 = the file where it should be search for.

Например, для запуска пакетного файла: test.bat "C:\Batch\SourceDir" "C:'\Batch\Output" "test.xml"

В папке SourceDir у меня есть две подпапки:

  • 1000
    • text.xml
  • 2000
    • test.xml

В каждой из этих папок находится файл test.xml . Я хочу скопировать оба файла в выходной каталог, и файл latetst должен перезаписать предыдущий.

Это, к сожалению, не работает. Может кто-нибудь сказать мне, почему? Я получаю сообщение: система не может найти указанный файл.

1 ответ1

1

Папка или файл с пробелом приведет к ошибке, потому что это будет несколько аргументов. Если вы добавите кавычки между вашим источником и местом назначения в команде COPY, это, вероятно, сработает.

Ваш сценарий станет:

echo off
set arg1=%1
set "arg2=%~2"
set arg3=%3

FOR /R %arg1% %%G IN (%arg3%) DO (
    COPY "%%G" "%arg2%\tempsrc\%%~nxG"
)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .