如何从RD批处理命令重定向输出(不带/ S / Q)

时间:2017-06-22 16:21:45

标签: batch-file

以下文件夹删除命令输出未按预期重定向到文件中:

RD folder >> logfile.txt

仅当使用以下命令删除文件夹AND所有子文件夹和文件时才有效:

RD folder /S /Q >> logfile.txt

但是,目的是只删除一个空文件夹,而不删除任何文件,并将所有输出重定向到一个文件中(错误消息和所有文件)。

如何做到这一点?

完整批处理文件上下文是删除用户配置文件备份中的所有空文件夹,如下所示:

set Root=e:\users\somebody
for %%A in (Desktop Documents Downloads Favorites Install Music OneDrive Pictures Videos) do (
    if exist "%Root%\%%A\" (
        echo %%A ------- >> Backuplog.txt
        for /F "tokens=*" %%B in ('dir %Root%\%%A /ad /b /s ^| sort /r') do rd %%B >> Backuplog.txt
    )
)

由于

1 个答案:

答案 0 :(得分:0)

删除空文件夹时,

rd不会产生任何输出,因此需要此结果。但是,您可以使用条件运算符&&(上一个命令成功)和||(先前的命令失败)。所以它可能是

set "Root=e:\users\somebody"
for %%A in (Desktop Documents Downloads Favorites Install Music OneDrive Pictures Videos) do (
    if exist "%Root%\%%A\" (
        echo %%A ------- >> Backuplog.txt
        for /F "tokens=*" %%B in ('dir %Root%\%%A /ad /b /s ^| sort /r') do rd "%%B" 2>NUL && (>>Backuplog.txt echo succesful) || (>>Backuplog.txt %%B echo failed) 
    )
)