在Windows 7命令提示符中,我想列出名称不以abc
开头的文件夹的所有文件。我试过了:
forfiles /P C:\myFolder\ /M ^[abc]* /S /C "CMD /C echo @file"
我的错误在哪里?
非常感谢。
答案 0 :(得分:3)
查看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
(执行 in 敏感的正则表达式匹配,这与Windows文件名无关。)
NB。假设你想要文件没有开始ABC
,这不是你的(尝试过的)正则表达式所说的(任何文件名都不是a
,b
或c
)。
答案 1 :(得分:1)
我的错误在哪里?
您的错误认为forfiles
命令支持正则表达式。
没有。它支持与*
和?
匹配的文件名。
答案 2 :(得分:0)
如果使用xcopy
命令而不是echo
,则使用选项/exclude
。例如:
forfiles /P C:\myFolder\ /M ^[abc]* /S /C "CMD /C xcopy @path %myDestinationFolder% /exclude:abc*"
此外,如果您使用的是PowerShell,则另一个选项是运营商-match
。