Is there an MS-DOS command that allows me to delete all files except one?
Consider as an example the following files:
a.001
a.002
a.003
a.exe
a.c
Is there a command to delete all files except a.c
?
You can use the for
and if
commands to accomplish this:
for %i in (*) do if not "%~i" == a.c del "%~i"
This goes through the current directory, and compares each file name to a.c. If it doesn't match, the file is deleted.
for
regularly you come up with all kinds of crazy scenarios for it. :)
IF
statement to be case insensitive, change it to IF /I
.
You could set the file to read only before deleting everything
attrib +r a.c
del *.*
attrib -r a.c
> nul 2>&1
to the end of the del line
Commented
Mar 29, 2021 at 14:30
No, there isn't. I'd make a directory, copy the important file into it, erase ., and move the file back. Then delete the temp file.
mkdir temp
move a.c temp
erase *.*
move temp\* .
rmdir temp
FOR %f IN (*.*) DO IF NOT [%f]==[a.c] DEL /Q %f
FOR /F "tokens=1-4" %%a in ('dir /a:-d /b /s %app_path%^|find /v "%file%"') DO Del /q %%a %%b %%c %%d
%app_path%
and %file%
are the root of the tree to traverse, and the file to avoid deleting, respectively. What is the ^
, and why are we passing four tokens per file to the Del
command?