批处理中for循环变量赋值问题 5
setlocalenabledelayedexpansionfor/f"tokens=*"%%iin('dir/s/b*.wav')do(setoutp=%%iecho%...
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir/s/b *.wav') do (
set outp=%%i
echo %outp% 值为空
"c:\convert.exe" -b 8 "%%i" "f:\des\test\%outp:~20,35%"
)
请问大虾们这个该怎么处理?连延迟都不行吗? 展开
for /f "tokens=*" %%i in ('dir/s/b *.wav') do (
set outp=%%i
echo %outp% 值为空
"c:\convert.exe" -b 8 "%%i" "f:\des\test\%outp:~20,35%"
)
请问大虾们这个该怎么处理?连延迟都不行吗? 展开
推荐于2017-11-27
展开全部
预处理机制:批处理读取命令时是按行读取的(另外例如 for 命令等,其后用一对圆括号闭合的所有语句也当作一行),在处理之前要完成必要的预处理工作,这其中就包括对该行命令中的变量赋值。在不启用变量延迟,也不对变量动态捕获其扩展变化时,变量在预处理阶段不作改变
setlocal enabledelayedexpansion ,就是启用变量延迟,我们可以形象的认为是启用了“对变量动态捕获扩展变化”。而 ! 括起来的变量,就是要动态捕获扩展的目标变量,如果不需要,可以继续使用 % 括变量。
示例
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%i in (1 1 10) do (
set var=%%i
echo !var! 启用延缓环境变量
echo %var% 未启用延缓环境变量
)
setlocal enabledelayedexpansion ,就是启用变量延迟,我们可以形象的认为是启用了“对变量动态捕获扩展变化”。而 ! 括起来的变量,就是要动态捕获扩展的目标变量,如果不需要,可以继续使用 % 括变量。
示例
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%i in (1 1 10) do (
set var=%%i
echo !var! 启用延缓环境变量
echo %var% 未启用延缓环境变量
)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询