Reputation: 95
I am running a batch file and I have one forfiles command in it
FORFILES -p%spinputarchrootpath% -m*.csv -d-365 -c"CMD /C DEL @FILE"
%spinputarchrootpath% variable maps to a folder location (Y:\Temp Documents\testfolder).
Now the above command is throwing an error because of the space in the folder name (Temp Documents).
How to handle this space? I have tried putting quotes around %spinputarchrootpath%
variable but it is not working.
Upvotes: 4
Views: 14328
Reputation: 71
I'd the same problem and found the solution. I think your folder-variable of the folder you wish to empty has a backslash at the end.
This will NOT work:
echo J|forfiles /P "C:\temp files\" /S /M * /D -7 /C "cmd /c del /F /S /Q @path"
... but this works (without backslash)
echo J|forfiles /P "C:\temp files" /S /M * /D -7 /C "cmd /c del /F /S /Q @path"
Regards
Tino
Upvotes: 7
Reputation: 11
Check post: How to Tell FORFILES to Execute Command on Path?
The problem lies in the part: -c"CMD /C DEL @FILE"
Use: -c"CMD /C DEL ^0x22@FILE^0x22" to put extra double quotes around the file
Upvotes: 1
Reputation: 12711
As a work around first change directories to the folder you want, and then execute forfiles without the /p parameter.
CD %spinputarchrootpath%
FORFILES -m*.csv -d-365 -c"CMD /C DEL @FILE"
Upvotes: 1
Reputation: 77717
Enclose the path in quotes:
FORFILES -p "%spinputarchrootpath%" -m *.csv -d -365 -c "CMD /C DEL @FILE"
Note, there's a space between -p
and "%spinputarchrootpath%"
. Without a space in this case it won't work.
Upvotes: 3