在 Windows 7 命令提示符中,我想列出名称不以abc. 我试过了:
forfiles /P C:\myFolder\ /M ^[abc]* /S /C "CMD /C echo @file"
我的错误在哪里?
非常感谢。
在 Windows 7 命令提示符中,我想列出名称不以abc. 我试过了:
forfiles /P C:\myFolder\ /M ^[abc]* /S /C "CMD /C echo @file"
我的错误在哪里?
非常感谢。
看着forfiles /?:
/M searchmask Searches files according to a searchmask. The default searchmask is '*' .
强烈建议forfiles不支持正则表达式,只支持普通的 Cmd/Windows 通配符。
在 Windows 7 上,这可以在 PowerShell 中轻松实现:
dir c:\myFolder | ?{ -not($_.Name -match '^abc') } | select Name
(这执行区分大小写的正则表达式匹配,这在 Windows 文件名的情况下无关紧要。)
注意。假设您想要文件 not started ABC,这不是您(尝试的)正则表达式所说的(任何文件名都不是以a,b或开头的东西c)。
我的错误在哪里?
您的错误是认为该forfiles命令将支持正则表达式。
它不是。它支持与*和匹配的文件名?。
在使用xcopy命令而不是使用选项的情况下,另一种方法echo是使用 option /exclude。例如:
forfiles /P C:\myFolder\ /M ^[abc]* /S /C "CMD /C xcopy @path %myDestinationFolder% /exclude:abc*"
此外,如果您使用的是 PowerShell,则另一个选项是 operator -match。