我正在编写一个脚本,该脚本应该清空连接到计算机的所有设备/分区的Recycle.Bin
。
它通过测试可用的可用设备(从a到z字母)来做到这一点,不包括那些没有连接的设备。
由于IF
循环中的FOR
语句,脚本无法正常运行。我怎么能绕过这个?
@echo off
Setlocal EnableExtensions EnableDelayedExpansion
FOR %%G IN (a b c d e f g h i j k l m n o p q r s t u v w x y z) DO (
SET nodev=none
fsutil fsinfo volumeinfo "%%G:" | find "Errore:" > nul
IF %ERRORLEVEL% EQU 0 SET nodev="%%G:"
IF "%%G:" NEQ "%nodev%" (
RD /s /q "%%G:\RECYCLED"
RD /s /q "%%G:\RECYCLER"
RD /s /q "%%G:\$Recycle.Bin"
)
)
答案 0 :(得分:3)
有几个问题。
首先,您要设置nodev
变量及其周围的%
,只有在访问变量时才会使用。
其次,您需要使用延迟扩展来在for
循环内使用!
代替%
来访问该变量。
试试这个
@echo off
Setlocal EnableDelayedExpansion
FOR %%G IN (a b c d e f g h i j k l m n o p q r s t u v w x y z) DO (
SET nodev=none
fsutil fsinfo volumeinfo "%%G:" | find "Errore:" > nul
IF !ERRORLEVEL! EQU 0 SET nodev="%%G:"
IF "%%G:" NEQ "!nodev!" (
RD /s /q "%%G:\RECYCLED"
RD /s /q "%%G:\RECYCLER"
RD /s /q "%%G:\$Recycle.Bin"
)
)
答案 1 :(得分:1)
尝试使用此代替fsutil。它的代码更清晰。
@echo off
Setlocal EnableDelayedExpansion
FOR %%G IN (a b c d e f g h i j k l m n o p q r s t u v w x y z) DO (
cd /d "%%G:" 2>nul
IF !ERRORLEVEL! EQU 0 (
RD /s /q "%%G:\RECYCLED"
RD /s /q "%%G:\RECYCLER"
RD /s /q "%%G:\$Recycle.Bin"
)
)
答案 2 :(得分:0)
为什么不下载像
这样的简单程序EmptyRecycleBin.exe
完美运作
使用谷歌获取链接