【问题标题】:Batch copying certain files within a folder批量复制文件夹中的某些文件
【发布时间】:2019-10-18 02:44:21
【问题描述】:

我正在尝试在文件夹及其子文件夹中查找特定文件并将它们复制到新文件夹中。我曾经为此目的使用此批处理文件,但现在我收到此错误:

系统找不到指定的文件。

这是批处理文件的内容:

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 作为参数。

【问题讨论】:

    标签: batch-file cmd robocopy


    【解决方案1】:

    我会换成

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

    这将满足%%G 中的空间。

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

    既然你是pushding到合适的目录,就不需要在for/r中指定目标目录了。可以省略或替换为.

    或者直接在pushd 之后的echo %cd% 以显示pushd 是否是问题的原因。

    【讨论】:

    • 感谢您的回答。我测试了你的建议。它成功打印出带有echo %G 的文件,但是当我尝试复制它们时,出现上述错误。
    • 然后似乎将其隔离到目标目录。建议您将其更改为已知良好的,看看是否有任何不同。
    • 有道理。会试试的。
    【解决方案2】:

    我意识到这对我有用(在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

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

    【讨论】:

      猜你喜欢
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 2014-04-03
      • 2015-02-08
      相关资源
      最近更新 更多