我有一个batch-file,它可以按预期工作,删除具有指定字符串或扩展名的文件,但我想保留删除内容的记录。
在运行实际命令之前,我想获取命令的输出并将其写入桌面上的.txt
文件中:
if /I %CONFIRM%==y (
(del /F /S %FOLDER%\*%DELETE%)>"C:\Users\%username%\Desktop\deleted.txt"
del /F /S %FOLDER%\*%DELETE%
)
在这种情况下,%DELETE%
是用户输入的变量值bak
。
如果我尝试删除.bak
文件,它仍会删除文件,但会给我以下结果,并且不会写入文本文件:
Could Not Find C:\Users\USERXYZ\Desktop\*bak
有什么想法吗?
答案 0 :(得分:0)
也许
set /p "confirm=delete %FOLDER%\*%DELETE% ? "
if /I %CONFIRM%==y (
(ECHO del /F /S %FOLDER%\*%DELETE%)>"C:\Users\%username%\Desktop\deleted.txt"
(dir/S/B %FOLDER%\*%DELETE%)>>"C:\Users\%username%\Desktop\deleted.txt"
del /F /S %FOLDER%\*%DELETE%
)
可能有帮助。
在您的代码中,第一个del
命令删除文件,并且应该创建包含已删除文件名称的deleted.txt
文件。由于这些文件现已被删除,因此第二个del
命令非常正确地报告它无法删除文件,因为它们不再存在。
请注意,>
将创建一个新文件,而>>
将附加到现有文件(如果不存在,则创建一个新文件)
此代码中的echo del
显示了将要执行的命令-idk,您可能想要也可能不想要。但是>
会将其放入一个新文件中。