【问题标题】:Wildcard in cmd filescmd文件中的通配符
【发布时间】:2011-04-09 20:39:24
【问题描述】:

我遇到需要删除所有用户目录中的一个文件的情况

例如

C:\Users\User1\Desktop\deleteme.txt
C:\Users\User2\Desktop\deleteme.txt
C:\Users\User3\Desktop\deleteme.txt

我需要一个将用户目录视为通配符的命令,所以我不需要指定任何内容。

我试过了:

C:\Users\*\Desktop\deleteme.txt

这不起作用:(

任何帮助将不胜感激

【问题讨论】:

  • 对不起,我试过了:C:\Users*\Desktop\deleteme.txt(出于某种原因,这个编辑器不允许我插入双反斜杠

标签: batch-file cmd wildcard


【解决方案1】:

您可以尝试迭代所需的文件夹:

for %%X in (C:\Users\User1 C:\Users\User2 C:\Users\User3) do (del %%X\Desktop\deleteme.txt )

for /d %%X in (C:\Users\*) do (del %%X\Desktop\deleteme.txt )

有一篇好文章 Iterating with "For"

更新 这样:

for /d %%A in (C:\Users\*) do for /d %%B in (%%A\*) do echo %%B

您可以列出所有用户文件夹中的所有子目录。

【讨论】:

  • 问题是,我事先不知道用户名,因此需要使用通配符,那么就没有办法了吗? :(
  • 对不起,我没有正确阅读您的回答。非常感谢,你为我节省了很多时间:)谢谢!
  • @James:您可以接受您认为正确的解决方案并支持您认为有帮助的解决方案。
  • 哦,对不起,我没有意识到你可以做到这一点,而问题是开放的,你会如何做这样的事情:(del %%X\Desktop\\Folder\%%X\deleteme.txt) ?
  • for /d %%X %%Y in (C:\Users*) do (del %%X\Desktop\%%Y\deleteme.txt) ??
【解决方案2】:

C:\Users*\Desktop\deleteme.txt

我认为C:\Users 之后可能缺少反斜杠,但事实并非如此。正如我刚刚注意到的,这是这里的语法问题。省略星号前的反斜杠。

如果一个批处理文件证明不够用并且您只在 Windows 7 上工作,您可以切换到 PowerShell

【讨论】:

  • 要获得缺少的反斜杠,您必须使用双反斜杠:`C:\Users\*`
  • 不幸的是它混合了平台(XP +),所以没有办法实现我想在 cmd 中做的事情?
  • 缺少的反斜杠只是一个格式问题,现在已经解决了。不过,请参阅另一个答案;这对cmd 来说是微不足道的。
猜你喜欢
  • 2018-09-04
  • 1970-01-01
  • 2018-01-02
  • 2014-05-15
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 2011-05-10
  • 1970-01-01
相关资源
最近更新 更多