首页 > 解决方案 > 批处理 /f 遍历所有可用驱动器以搜索文件夹

问题描述

我正在编写简单的脚本来检查可用驱动器中是否存在某个文件夹。但是,如果我只是回显 %%G,则在与 ":\somefolder" 连接时,%%G 总是显示空字符串,它会显示所有可用的驱动器。我是批处理脚本的新手,不确定我在这里缺少什么。

提前致谢。

@echo off 
   ::parse the VER command 
   FOR /F "tokens=*" %%G IN ('wmic logicaldisk get caption') DO (
    IF [%%G]==[] (
                    echo "empty string"
    ) ELSE (

        SET var="%%G\somefolderpath"
        IF EXIST %var% (
            echo %var% found
        ) ELSE (
            echo %var% not found
        )
     )
)

标签: batch-filecmddelayedvariableexpansion

解决方案


这是另一种方法。该WMIC命令已弃用。 https://itknowledgeexchange.techtarget.com/powershell/wmic-deprecated/

正如其他人所提到的,在 FOR 循环中设置和使用变量需要ENABLEDELAYED EXPANSIONor CALL

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "delims=" %%G IN ('powershell -NoLogo -NoProfile -Command ^
        "(Get-CIMInstance -ClassName Win32_LogicalDisk).DeviceID"') DO (
    SET "VAR=%%G\somefolderpath"
    IF EXIST "!VAR!" (
        echo "!VAR!" found
    ) ELSE (
        echo "!VAR!" not found
    )
)

推荐阅读