E=mc2
asked on
Delete files that contain a specific string
I want to delete files that contain a specific string..
if exist *.txt findstr /c:"AB*123*" *.txt ... then delete the files
I need to know how to complete this.
if exist *.txt findstr /c:"AB*123*" *.txt ... then delete the files
I need to know how to complete this.
ASKER
I want to delete the files that contain the string AB*123* within them, not within the name of the file
Are you needing to learn how to pipe output from findstr into a del command? That should be just about all that's need if I understand your question.
Tom
Tom
You can run from console if you you are in the current directory:
To run within batch file, change %F to %%F.
Make sure to run this as a test first to confirm the requirements are met.
for /f "eol=: delims=" %F in ('findstr /m AB*123* *.txt') do del "%F"
To run within batch file, change %F to %%F.
Make sure to run this as a test first to confirm the requirements are met.
ASKER
for /f "eol=: delims=" %F in ('findstr /m AB*123* *.txt') do del "%F"
The above does not work. I think it has to do with the fact that AB*123* is the string to look for, I don't think it's the correct syntax. If you look for *123* then it will work.
I need for the command to look for AB*123* within the file itself, and once it finds this string, then to delete the file that it found the string inside.
The above does not work. I think it has to do with the fact that AB*123* is the string to look for, I don't think it's the correct syntax. If you look for *123* then it will work.
I need for the command to look for AB*123* within the file itself, and once it finds this string, then to delete the file that it found the string inside.
OK, let's step back and look at it again...
Try running the following from directory where the files are. You should return all file names that meet the criteria:
Also, are you sure you are wanting the *?
for findstr:
. Wildcard: any character
* Repeat: zero or more occurrences of previous character or class
^ Line position: beginning of line
$ Line position: end of line
Try running the following from directory where the files are. You should return all file names that meet the criteria:
for /F %a in ('dir /b *.txt findstr "AB*123*"') do @echo del "%a"
Also, are you sure you are wanting the *?
for findstr:
. Wildcard: any character
* Repeat: zero or more occurrences of previous character or class
^ Line position: beginning of line
$ Line position: end of line
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Open in new window
If it is the "AB*123*" you are searching for in a txt file, then:
Open in new window
If you want to do this recursively, use /s:
Open in new window