复制文件夹中的某些文件

时间:2017-04-17 13:22:08

标签: batch-file cmd

我正在尝试查找文件夹及其子文件夹中的特定文件,并将它们复制到新文件夹中。我过去常常使用这个批处理文件,但现在我收到了这个错误:

系统找不到指定的文件。

这是批处理文件内容:

pushd "\\internal.company.com\path\"
md myfile
FOR /R "\\internal.company.com\path\" %%G in (prefix_myfile*) do copy %%G "\\internal.company.com\path\myfile"

赞赏任何意见。

更新

我尝试像这样打印%%G

FOR /R "\\internal.company.com\path\" %%G in (prefix_myfile*) do echo %%G

它运作良好。问题出现在copy命令中,该命令无法将%%G作为参数读取。

2 个答案:

答案 0 :(得分:0)

我改为

... copy "%%G" ...

可以满足%%G中的空格。

也许你应该确定问题是for/r还是%%G。如果您只是使用%%G命令显示echo %%G,那么您可能会看到一些问题。如果它仍然无法运行,那么for /r就是问题。

由于您pushd到相应的目录,因此无需在for/r中指定目标目录。它可以省略或替换为.

echo %cd%直接在pushd之后显示pushd是否是导致问题的原因。

答案 1 :(得分:0)

我意识到这对我有用(在cmd执行)。但是,这似乎是合理的,因为我在主目录中没有任何*.txt文件。不是最好的解决方案,而是一种解决方法。

pushd "\\internal.company.com\path\"
rem first copy the desired files (text files) to the main-folder
for /f "tokens=*" %f in ('dir /a:-D /s /b myfile*') do copy "%f"
rem then make a new-folder and move them to there
md myfile
move *.txt "\\internal.company.com\path\myfile"

注意:如果要将其作为批处理文件执行,则需要使用%%f代替%f

这会将文件复制到主文件夹中,然后将它们移动到所需的子文件夹中。