不客气,如您所说直接执行命令和保存到批处理执行语法是不同的。
.bat文件中的“*”通配符
.bat程序中对于路径以及文件夹的名字,能使用“*”作为通配符吗?(本人测试结果是不能)
如果能,应该如何使用;如果不能,有何替代方案?
Windows 家庭版 | 以前的 Windows 版本 | 文件、文件夹和存储
锁定的问题。 此问题已从 Microsoft 支持社区迁移。 你可投票决定它是否有用,但不能添加评论或回复,也不能关注问题。
-
匿名
2021-03-04T02:56:40+00:00
-
匿名
2021-03-03T03:23:06+00:00 命令提示符的 DIR、
RD、ICACLS 等命令和实用程序支持 * 号作为通配符,但 * 号通配符不是命令提示符的全局功能,所以这取决于您使用的命令或命令行实用程序是否支持将 * 号作为通配符使用。 -
匿名
2021-03-03T05:57:44+00:00 谢谢您的回答。
我现在想实现的功能是批量删除一个路径下所有开头相同的文件夹。
例:删除C盘下所有以2020开头的文件夹
我写的指令为:rd "C:\2020*"
我认为该指令逻辑没有问题,但是功能没有实现,故提出了该问题。
希望能得到您的回复与指导,再次感谢。
-
匿名
2021-03-03T07:20:05+00:00 很抱歉,是我是记忆出错了。RD(RMDIR,删除文件夹)命令不支持通配符。 DEL (ERASE,删除文件)命令才支持通配符。
从您的要求来看,由于限制条件只有一个2020* 开头的文件夹,却又是在驱动器 C 这个重要的系统路径下执行,非常容易导致误删除文件,我个人不建议直接进行删除,下面的命令会生成一份符合您要求的文件夹清单:
- 以管理员身份打开命令提示符,复制下面的命令并粘贴执行
CMD /C "DIR /A:D /B /S C:\2020*>>D:~Filelist.txt" DIR /A:D /B /S 命令参数组用来遍历指定文件夹及其子文件夹并以简单格式输出,最后将结果保存到 D:~Filelist.txt 文件里,您需要打开该文件,看看其中是否有不希望删除的文件夹,如果有请将其记录删除,然后保存。随后执行下面的命令:
for /f "delims=?" %l in (D:~Filelist.txt) do RD /S /Q "%l" 命令将会按照 D:~Filelist.txt 中记录的数据开始删除文件夹。
**注意:**上述命令对于您没有权限访问的文件和受系统保护的文件都会跳过,所以可能在执行命令的时候会出现访问错误的提示,这是正常的。
-
匿名
2021-03-03T07:36:31+00:00 之前忽略了命令的兼容性,请您在命令提示符中执行上面回复中的命令,在 PowerShell 中执行将会出错。