在运行命令之前将命令输出预览到文本文件(批处理)

时间:2019-04-26 19:39:15

标签: 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

有什么想法吗?

1 个答案:

答案 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,您可能想要也可能不想要。但是>会将其放入一个新文件中。