我有一个子文件夹,如:c:\main\bot01\sb0102
-> sb0199
,c:\main\bot99\sb9901
-> sb9999
。
如何制作批处理文件以将1个文件复制到每个以“ sb”开头的文件夹? 因为有许多“ sb ”文件夹,所以我无法像这样对它们的每一行进行命令:
xcopy "C:\test.txt" "c:\main\bot01\sb0102" /y
答案 0 :(得分:2)
您可以使用两个嵌套的计数for /l
循环
:: Q:\Test\2019\01\06\SO_54064719.cmd
@Echo off&SetLocal EnableDelayedExpansion
set "Sourcefile=C:\test.txt"
for /l %%B in (101,1,199) do (
set bot=%%B
Echo ---- bot !bot:~-2! ----
for /l %%S in (1,1,99) do (
Set /A sb=bot*100+%%S
echo Copy /B /Y "%Sourcefile%" "C:\main\bot!bot:~-2!\sb!sb:~-4!"
)
)
> Q:\Test\2019\01\06\SO_54064719.cmd
---- bot 01 ----
Copy /B /Y "C:\test.txt" "C:\main\bot01\sb0101"
Copy /B /Y "C:\test.txt" "C:\main\bot01\sb0102"
...
Copy /B /Y "C:\test.txt" "C:\main\bot01\sb0198"
Copy /B /Y "C:\test.txt" "C:\main\bot01\sb0199"
---- bot 02 ----
Copy /B /Y "C:\test.txt" "C:\main\bot02\sb0201"
Copy /B /Y "C:\test.txt" "C:\main\bot02\sb0202"
...
如果输出看起来不错,请删除副本前面的回声。
只是展示了一个Powershell解决方案,该解决方案可以在多个级别上实现范围
Get-ChildItem C:\main\bot[0-9][0-9]\sb[0-9][0-9][0-9][0-9] -Dir|ForEach-Object{
Copy-Item C:\test.txt -Destination $_
}
要放在以cmdline / batch包裹的主题上
powershell -NoP -C "Get-ChildItem C:\main\bot[0-9][0-9]\sb[0-9][0-9][0-9][0-9] -Dir|ForEach-Object{Copy-Item C:\test.txt -Destination $_}"
答案 1 :(得分:0)
这是我的评论作为答案
从批处理文件中:
@For /D %%A In ("C:\main\bot01\sb*") Do @Copy /Y "C:\test.txt" "%%A" >Nul 2>&1
从命令提示符处:
For /D %A In ("C:\main\bot01\sb*") Do @Copy /Y "C:\test.txt" "%A" >Nul 2>&1