在Windows 7命令提示符下,我想要列出名称不以abc
开头的文件夹的所有文件。 我努力了:
forfiles /PC:\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文件名的情况下无关紧要。)
NB。 假设你想要不启动ABC
文件,这不是你的(企图)正则表达式所说的(任何不是a
, b
或c
文件名)。
我的错误在哪里?
你的错误是认为forfiles
命令会支持正则表达式。
它不是。 它支持与*
和?
匹配的文件名 。
如果使用xcopy
命令而不是echo
则使用选项/exclude
。 例如:
forfiles /PC:\myFolder\ /M ^[abc]* /S /C "CMD /C xcopy @path %myDestinationFolder% /exclude:abc*"
另外,如果你使用的是PowerShell,另一个选项是operator -match
。