使用目录上的通配符从文件夹复制内容

时间:2018-08-31 20:08:39

标签: windows batch-file copy wildcard

我有一个目录,其中包含需要移动到另一个目录的CSV文件:

C:\Users\JohnSmith\Desktop\Testing\report-20180819040000-20180826040000-4

我们每周都会收到一个新文件,其中目录名称中的日期将被更新。我想创建一个批处理文件,以在report*上使用通配符复制此数据,但是遇到了一些问题。

当我第一次导航至时,通配符似乎可以正常工作

C:\Users\JohnSmith\Desktop\Testing\

然后使用:

dir report*

当我导航至以下位置时,它也可以正常工作

C:\Users\JohnSmith\Desktop\Testing\

然后运行

copy * C:\Users\JohnSmith\Desktop\Testing\Destination

我的目标是能够在批处理文件中运行如下所示的简单操作:

copy C:\Users\JohnSmith\Desktop\Testing\report* C:\Users\JohnSmith\Desktop\Testing\Destination

每当我尝试运行以上命令时,都会出现以下错误:

  

系统找不到指定的文件。           已复制0个文件。

有人有什么建议吗?

1 个答案:

答案 0 :(得分:0)

For /D与通配符一起用作目录名,然后也可以将Copy与通配符一起使用!

从命令提示符处:

For /D %A In ("%UserProfile%\Desktop\Testing\report-*-*-*") Do @Copy "%A\*.csv" "%UserProfile%\Desktop\Testing\Destination">Nul 2>&1

从批处理文件中:

@For /D %%A In ("%UserProfile%\Desktop\Testing\report-*-*-*") Do @Copy "%%A\*.csv" "%UserProfile%\Desktop\Testing\Destination">Nul 2>&1

或者,您也可以直接在Powershell提示符下执行此操作:

Cp "$($Env:UserProfile)\Desktop\Testing\report-*-*-*\*.csv" "$($Env:UserProfile)\Desktop\Testing\Destination"