【问题标题】:Wildcard (*) in the path don't work while copying from cmd [closed]从cmd复制时路径中的通配符(*)不起作用[关闭]
【发布时间】:2015-05-24 13:07:01
【问题描述】:

文件夹中有一个文件(abc.txt)- C:\vackwrk\24may\abc.txt

我想使用 cmd- 将该文件复制到另一个文件夹 G:\work\

我使用copy C:\vackwrk\24may\abc.txt G:\work\ 这项工作,但是当我使用通配符时它不起作用copy C:\vackwrk\*\abc.txt G:\work\ 这次输出是-The filename , directory name or volume label syntax is incorrect

为什么?有没有其他方法可以使用通配符进行复制?

【问题讨论】:

  • 是的,windows 命令行无法做到这一点。即使它总体上更聪明,它仍然不应该:想想如果你有两个目录C:\vackwrk\foo\C:\vackwrk\bar\ 会发生什么,两者都有一个文件abc.txt。那你的命令会怎么做?哪个文本文件以G:\work 结尾?
  • 好的thnx,现在我正在使用powershell进行复制,这次通配符工作了!
  • 请公开您的解决方案(How to Answer您自己的问题)。总的来说,我同意@Antares42 :)

标签: windows cmd path


【解决方案1】:

从 cmd 复制时无法使用通配符,因为如果有任何其他目录 C:\vackwrk\foo\C:\vackwrk\bar\,都带有文件 abc.txt,系统会产生歧义。

但是 Windows PowerShell 让您可以非常轻松地使用通配符进行复制,只需打开 cmd 并输入 start powershell.exe copy C:\vackwrk\*\abc.txt G:\work\ 或只需打开 Windows PowerShell 并输入 PS C:\Windows\system32> copy C:\vackwrk\*\abc.txt G:\work\ 即可。

它工作正常,所以我认为 Windows PowerShell 比 cmd 更强大。

【讨论】:

  • 可以在传统命令行上做的是放入通配符,然后按TAB。如果有多个匹配项,再次按 TAB 将在它们之间循环。
  • @HarryJohnston,PowerShell 为每个匹配的文件调用CopyFileExW,每次都覆盖单个目标文件。它甚至不询问或通知用户!那是鲁莽的。它还扩展了通配符选项卡完成。在 PowerShell 中,按 <TAB> 输入路径 C:\*\*\abc.txt 将循环匹配路径字符串中的每个通配符。这太疯狂了。我只能让cmd完成最终路径元素中的通配符,例如C:\vackwrk\foo\ab?.txt
  • @eryksun:实际上 cmd 仅对最近的元素进行制表符补全这一事实并不是问题。这只是意味着您必须在输入通配符后立即按 TAB。获得所需的目录名称后,您可以输入路径的其余部分。 (尽管 PowerShell 的制表符补全行为也不是真正的问题,但前提是您要密切注意它扩展了路径。)
  • @HarryJohnston,我并不是说 cmd 的行为有问题。我更喜欢在输入路径时只在叶节点处完成通配符。我认为 PowerShell 的行为太过分了。它可能会从驱动器的根目录中搜索数千个文件。除非意外,否则我永远不会使用它。
猜你喜欢
  • 2016-07-02
  • 1970-01-01
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
  • 2023-01-18
  • 1970-01-01
  • 2014-08-30
  • 1970-01-01
相关资源
最近更新 更多