问题
I'm trying to delete some files with a batch script, based on a regular expression. What I have is:
FOR /f "tokens=*" %%a in ('dir /b | findstr MY_REGEX_HERE') DO ECHO %%a
I know my inner command works on its own, giving me the list of directories, but when I embed it in the for loop like this I get an error | was unexpected at this time.
Is piping not allowed within FOR loop commands? Or do I need to escape it or something?
Any help on how I can do this would be great.
回答1:
FOR /f "tokens=*" %%a in ('dir /b ^| findstr MY_REGEX_HERE') DO ECHO %%a
Escape the |
using a ^
before it.
回答2:
The CMD processor is just too limited to do what you want here, pipe is not legal in this context. You could kludge it with replacing your ECHO stub with a CALL to another batch file, but even then you will still have problems. See Want to batch move all files from directories into the parent directory and delete the subdirectory for my quick comparion of scripting environments options.
来源:https://stackoverflow.com/questions/18386164/batch-script-to-delete-files-based-on-findstr-regex