在Windows 7命令提示符下,我想列出名稱不以abc
開頭的文件夾的所有文件。我曾嘗試過:Windows腳本:列出與模式不匹配的文件
forfiles /P C:\myFolder\ /M ^[abc]* /S /C "CMD /C echo @file"
我的錯誤在哪裏?
非常感謝。
在Windows 7命令提示符下,我想列出名稱不以abc
開頭的文件夾的所有文件。我曾嘗試過:Windows腳本:列出與模式不匹配的文件
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
不支持正則表達式,只是正常的命令/的Windows通配符。
在Windows 7這可以很容易地在PowerShell中實現:
dir c:\myFolder | ?{ -not($_.Name -match '^abc') } | select Name
(即在執行敏感正則表達式匹配,這並不在Windows的文件名的情況下,不管一個區分。)
NB。假設你想要的文件不是ABC
,這不是你的(嘗試的)正則表達式所說的(任何文件名的起始值不是a
,b
或c
)。
我的錯誤在哪裏?
您的錯誤認爲forfiles
命令將支持正則表達式。
它沒有。它支持與*
和?
匹配的文件名。
另一種方法是,在使用xcopy
命令而不是echo
的情況下使用選項/exclude
。例如:
forfiles /P C:\myFolder\ /M ^[abc]* /S /C "CMD /C xcopy @path %myDestinationFolder% /exclude:abc*"
而且,如果you're使用PowerShell的,另一種選擇是運營商-match
。