删除旧文件和LOG IT

时间:2017-10-16 18:22:06

标签: batch-file cmd

我正在寻找一个简单的批处理脚本,它允许我删除旧文件并记录它删除的内容。在网上搜索后,我找到了" forfiles"非常有用:

forfiles -p "C:\what\ever" -s -m *.* -d <number of days> -c "cmd /c del @path"

自: Batch file to delete files older than N days

我所说的关注是记录已删除的内容。我尝试过很多东西,但它仍然没有用。这是我的实际代码:

set logfile=D:\what\ever\automatic_delete_log_%date:~10,4%-%date:~7,2%-%date:~4,2%_%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%.txt
forfiles /p "C:\what\ever\Downloads" /s /m *.* /D -290 /C "cmd /c set status=failed; del @path && set status=success; echo @path @fdate %status% >> %logfile%"
echo %logfile%

已创建日志文件但该文件为空,并且不会删除旧文件。 (它应该删除我从2016年的8个文件)当我使用原始代码时,它删除文件。我读到它可能是关于逃避&amp;&amp;。我试图逃避他们,我试图逃避;我试图逃避他们两个没有更多的成功。我不知道自己应该做些什么。有人可以帮忙吗?

ojectiv是删除文件,如果它成功登录&#34;路径,日期,成功&#34;否则记录&#34;路径,日期,失败&#34;。

1 个答案:

答案 0 :(得分:0)

有足够的逃避,就可以完成。丑陋,但可以做到。请记住,DEL命令确实没有设置ERRORLEVEL。对文件存在的测试表明它尚未成功删除。

forfiles /p "C:\src\t" /s /m *.* /D -290 /C ^"cmd.exe /C ^
    set ^"status=failed^" ^&^& ^
    echo DEL @path ^&^& ^
    IF NOT EXIST @path ( ^
        echo @path @fdate SUCCESSFUL >>^"%logfile%^" ^
    ) ELSE ( ^
        echo @path @fdate FAILED >>^"%logfile%^" ^
    ) ^
    ^"