我在使此语法正常工作时遇到问题。如果修改日期早于 7 天,我想要做的是从指定目录和所有子目录中删除所有 tmp 和 bak 文件。
for %G in (.tmp, .bak) do forfiles -p "C:\test\cad projects" -s -m *%G -d -7 -c "cmd /c del @path"
Run Code Online (Sandbox Code Playgroud)
我的语法是从这个 StackOverflow question收集的。
如果我将搜索掩码更改为仅包含一个所需的扩展名,那么我会得到正确的结果。
forfiles -p "c:\test\cad projects" -s -m *.bak -d -7 -c "cmd /c del @path"
Run Code Online (Sandbox Code Playgroud)
我对批处理文件的处理不多,所以我希望有人可以提供帮助。谢谢阅读。
如果您从控制台运行它,它应该可以工作。如果您将其保存为.bat文件,则变量的格式略有不同。您必须使用两个百分号来表示一个变量。因此,您的命令将变为...
for %%G in (.tmp, .bak) do forfiles -p "C:\test\cad projects" -s -m *%%G -d -7 -c "cmd /c del @path"
Run Code Online (Sandbox Code Playgroud)
Microsoft 的KB75634文章解释了为什么会这样。
如果两个百分号之间没有字符,则去掉一个百分号,保留另一个。这就是为什么用 .COM 扩展名回显每个文件的名称的 FOR 命令将是
Run Code Online (Sandbox Code Playgroud)FOR %V IN (*.COM) DO ECHO %V但如果将相同的命令放在批处理文件中,则需要以下内容:
Run Code Online (Sandbox Code Playgroud)FOR %%V IN (*.COM) DO ECHO %%V
| 归档时间: |
|
| 查看次数: |
29390 次 |
| 最近记录: |