六维教程

Bat脚本 常见问题

变量在括号内不更新

问题:在 iffor 的括号内修改变量,使用 %var% 引用时值不更新。

解决:启用延迟扩展 setlocal enabledelayedexpansion,使用 !var! 引用。

@echo off
setlocal enabledelayedexpansion
set count=0
for %%i in (1 2 3) do (
    set /a count=!count!+1
    echo !count!
)

路径包含空格

问题:路径中包含空格时命令会报错。

解决:用双引号包围路径。

@echo off
:: ❌ 错误
copy C:\Program Files\app.exe D:\

:: ✅ 正确
copy "C:\Program Files\app.exe" "D:\"

:: 注释在括号内报错

问题:在 iffor 的括号内使用 :: 注释会导致脚本报错。

解决:括号内统一使用 REM 注释。

if 1==1 (
    REM ✅ 正确
    echo 正常执行
)

if 1==1 (
    :: ❌ 错误(可能导致脚本崩溃)
    echo 可能不会执行
)

for 循环变量名冲突

问题for 的循环变量不要使用 %0 ~ %9,这些是预留给脚本参数的。

:: ❌ 避免使用 %0
for %%0 in (*) do echo %%0

:: ✅ 使用字母
for %%i in (*) do echo %%i

等号两侧加空格导致变量值异常

@echo off
:: ❌ 错误:变量值包含空格
set name = 张三
echo "%name%"    :: 输出 ""(变量名变成了 "name ")

:: ✅ 正确:等号两侧无空格
set name=张三
echo %name%      :: 输出 "张三"
上一篇
Bat脚本 实用案例
下一篇
Vite 为什么需要 Vite