我正在尝试查找文件夹及其子文件夹中的特定文件,并将它们复制到新文件夹中。我过去常常使用这个批处理文件,但现在我收到了这个错误:
系统找不到指定的文件。
这是批处理文件内容:
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
作为参数读取。
答案 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
。
这会将文件复制到主文件夹中,然后将它们移动到所需的子文件夹中。