In Windows 7 command prompt, I´d like to list all files of a folder which name does not start with abc
. I have tried:
forfiles /P C:\\myFolder\\
An alternative, in case of using a xcopy
command instead of echo
is using the option /exclude
. For instance:
forfiles /P C:\myFolder\ /M ^[abc]* /S /C "CMD /C xcopy @path %myDestinationFolder% /exclude:abc*"
Also, if you´re using PowerShell, another option is the operator -match
.
Looking at forfiles /?
:
/M searchmask Searches files according to a searchmask. The default searchmask is '*' .
which strongly suggests forfiles
doesn't support regular expressions, just normal Cmd/Windows wildcards.
On Windows 7 this can easily be achieved in PowerShell:
dir c:\myFolder | ?{ -not($_.Name -match '^abc') } | select Name
(That performs a case-insensitive regular expression match, which doesn't matter in the case of Windows filenames.)
NB. Assuming you want files not starting ABC
, which isn't what your (attempted) regular expression says (any filename starting something that isn't a
, b
or c
).
Where is my error?
Your error is thinking that the forfiles
command would support regular expressions.
It does not. It supports file name matching with *
and ?
.