将文件复制到多个文件夹,而不是子文件夹批处理

时间:2012-08-10 18:21:46

标签: file for-loop batch-file copy

查找将文件复制到多个文件夹(与放置批处理文件的目录相同)中的批处理文件,而不是其子文件夹。

例如:
我需要K:\NewCustomers\NewPartNumber.Bat进入K:\NewCustomers\Customer Name\ 但不是\Customer Name\的任何子文件夹,有200-300个“客户名称”文件夹。

我正在使用:

for /R "K:\NewCustomers\" %%a in (.) do copy "K:\NewCustomers\NewPartNumber.bat" "%%a"

但这是递归的,现在这些其他文件夹中有文件夹,我无法在不将其放入每个子文件夹的情况下运行此命令。

我尝试运行for /d循环:

for /d "K:\NewCustomers\" %%a in (.) do copy "K:\NewCustomers\NewPartNumber.bat" "%%a"

但是在语法方面没有成功,过了一段时间现在正在寻找一些事情并尝试不同的事情,我正试着拔掉头发寻找答案。我收到这个错误:

  

K:\NewCustomers* was unexpected at this time.

1 个答案:

答案 0 :(得分:5)

使用for /d以非递归的方式循环遍历文件夹确实是正确的方法,但你需要像这样使用它:

for /d %%a in ("K:\NewCustomers\*") do copy "K:\NewCustomers\NewPartNumber.bat" "%%a"

或者,您可以将for /f循环与dir结合使用:

@echo off
pushd "K:\NewCustomers"
for /f "tokens=*" %%a in ('dir /A:D /B') do copy "NewPartNumber.bat" "%%a"
popd

就个人而言,我更喜欢第一种方法。