Windows 批处理文件 - 无法设置变量值

标签 windows if-statement batch-file windows-console

我正在编写一个脚本,该脚本应清空连接到计算机的所有设备/分区的 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/

相关文章:

windows - 尝试使用 win xp cmd 与设备通信

c++ - 如何运行外部程序,将内存地址传递给读/写?

java - 打印用户输入/多维数组

python - 在 Windows 8 上安装 Google Cloud SDK 时遇到问题

c++ - 如何在windows中使用openssl的静态库?

windows - 为什么我的 firebug 没有显示所有 javascript 错误

javascript - 带有 if else 条件的 getElementById.innerHTML

Python Pandas 计算日期之间的平均天数

xml - Powershell如何仅替换给定数量的火柴?

c++ - 将批处理脚本作为 Windows 服务运行