【问题标题】:Copy Contents From Folder Using Wildcard On The Directory使用目录上的通配符从文件夹中复制内容
【发布时间】:2019-02-06 21:00:32
【问题描述】:

我有一个目录,其中包含需要移动到另一个目录的 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 个文件。`

有人有什么建议吗?

【问题讨论】:

  • Copy 是用于复制文件的命令,但我在您的任何代码 sn-ps 中都没有看到任何 .csv 文件。您能否澄清report-20180819040000-20180826040000-4 是目录名还是缺少.csv 扩展名的文件名。
  • report-20180819040000-20180826040000-4 是包含.csv 文件的目录的名称。
  • 两件事,1. 如前所述,Copy 复制文件并为它提供目录。 2.您的问题是“移动”,但您的复制!

标签: windows batch-file copy wildcard


【解决方案1】:

使用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"

【讨论】:

  • 这是完美的。复制完成后,我可以使用相同(相似)的脚本删除此文件夹吗?
  • 无视。我使用类似的脚本得到它。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-10-15
  • 2014-04-22
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 2017-07-05
  • 2012-04-07
  • 1970-01-01
相关资源
最近更新 更多