好的伙计们,我对使用批处理文件相当陌生,而且我之前创建的两个文件都是独立工作的。
我希望将它们组合起来,但我仍然不完全理解FOR命令。我希望有人可以将这两组代码组合成一个,如果可能的话,解释如何从我的两个来源中得到他们使用的代码。
FOR /R d:\ %%A IN (test.txt) DO copy d:\%username%\Desktop\Test\Resources\test.txt %%A
FOR /R h:\ %%A IN (test.txt) DO copy d:\%username%\Desktop\Test\Resources\test.txt %%A
For /l %%1 in (1,1,10) do (
copy test.txt test%%1.txt > nul
)
基本上我希望将所选文件(test.txt)从设置位置复制到目录中的每个子目录,然后在每个文件夹中复制X次,并用增加的值重命名,例如。
test1.txt
的test2.txt
test3.txt
等
提前谢谢你。
答案 0 :(得分:2)
这实际上很直接。
您已经拥有从源复制到每个子目录的功能代码。在伪代码中:FOR (each directory) DO COPY source to target
。
您还拥有可以使用递增名称复制文件10次的代码。您希望在第1步中为每个目录执行此操作。所以,再次在伪代码中,它看起来像这样:
FOR (each directory) DO (
COPY source to target
FOR (N=1 TO 10) DO COPY source to targetN
)
上述语法都不是真实的,除了DO之后的括号实际上是允许批处理FOR命令执行多个命令块的方式。 (实际上还有其他技术可以做到这一点,但是parens工作正常。)
您缺少的部分是如何将递增数字插入%% A目标名称。这是通过使用FOR变量修饰符完成的,如FOR文档末尾所述,您可以通过键入HELP FOR
或FOR /?
从命令行访问。
修饰符允许您将文件规范解构为其组成部分。请注意,文件不必在物理上存在,文件规范仍然可以分解为组成部分。
%%~dpnA
= drive:\ path \ baseName(无扩展名)%%~xA
= .extension,包括点。您已经获得了递增数字 - 我将使用%%N
代替%%1
。因此,完整目标将是3个组件的串联:%%~dpnA%%N%%~xA
。
将所有内容放在一起可提供完整的解决方案:
FOR /R d:\ %%A IN (test.txt) DO (
copy d:\%username%\Desktop\Test\Resources\test.txt %%A
FOR /L %%N IN (1 1 10) DO copy d:\%username%\Desktop\Test\Resources\test.txt %%~dpnA%%N%%~xA
)