我有这个代码块:
@echo off
for %%d in (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 (
if exist "%%d:\Program Files (x86)\" (
cd /d "%%d:\Program Files (x86)\"
) else (
cd /d "%%d:\Folder\subfolder" 2>nul && goto :break
)
)
:break
if %errorlevel% equ 0 (
echo "Success, CDing to file location"
) else (
echo FAILURE
)
即使程序文件文件夹明显存在并且它对其执行CD,它也会在每次运行时打印失败。它不应该尝试评估错误条件,除非第一个失败。是什么给了什么?
答案 0 :(得分:1)
@echo off
setlocal enableextensions disabledelayedexpansion
(for %%d in (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 (
vol %%d: && (
cd /d "%%d:\Program Files (x86)\" && goto :break
cd /d "%%d:\Folder\Subfolder\" && goto :break
)
)) >nul 2>nul
:break
if errorlevel 1 (
echo FAILURE
) else (
echo "Success, CDing to file location"
)
vol
用于测试驱动器是否存在(我必须包含它以避免某些读卡器出现问题)。
如果任何cd
操作有效,请退出for
循环。
如果存在错误级别,则先前的代码失败。