批处理文件将文件复制到指定文件夹

批处理文件将文件复制到指定文件夹

我有一个批处理文件,它接收 1 到 9 个文件(或更多),并且需要将这些文件复制到一组文件夹中。有人能帮帮我吗?

我正在尝试做这样的事情:

for /L %%i in (1,1,9) do (
   copy %%i "\Folder1"
   copy %%i "\Folder3"
   copy %%i "\Folder5"
....
)

将作为参数 %1 传递的 file1 复制到所有目标文件夹,然后将 file2 从 %2 复制到所有目标文件夹,依此类推...但我不知道在 do () 过程中用什么来代替 %%1

答案1

尽管 LotPings 的答案可行,但一个更简单的答案(更接近原始问题的尝试并避免笨拙)goto是:-

for %%i in (%*) do (
   copy %%i "\Folder1"
   copy %%i "\Folder3"
   copy %%i "\Folder5"
....
)

此处%*会展开为完整的参数列表(无论它有多长),并且该for语句会考虑所有引号,并依次遍历给定的每个参数。同样,参数数量不受 9 个的限制,但批处理文件的最大参数数量为 255 个。

答案2

为了不被限制在 9 个参数,我会使用带有 goto 的循环和转移直到没有剩余的争论为止。

:: Q:\Test\2018\11\23\SU_1377880.cmd
@Echo off
:loop
if "%~1"=="" goto :Eof
if exist "%~1" (
    copy %1 "\Folder1"
    copy %1 "\Folder3"
    copy %1 "\Folder5"
) else ( Echo %1 not found )
shift
goto :loop

相关内容