我正在编写一个脚本,该脚本应清空连接到计算机的所有设备/分区的 Recycle.Bin
。
它通过测试可能的可用设备(从 a 到 z 字母)来实现此目的,排除未连接的设备。
由于 FOR
循环内的 IF
语句,脚本无法正常工作。我该如何解决这个问题?
@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"
)
)
最佳答案
有几个问题。
首先,您使用 %
来设置 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"
)
)
关于Windows 批处理文件 - 无法设置变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13955408/