Bat文件脚本

批处理文件运行机制:批处理读取命令时是按行读取的,对于for 命令等,其后用一对圆括号闭合的所有语句也当作一行。

在for循环中,如果要循环的对某个变量进行赋值,那就需要对该变量进行动态捕获,从而获得实时变化的该变量的值。
setlocal enabledelayedexpansion 命令就是启用变量延迟,
(1)如果不启用变量延迟,变量在预处理阶段不作改变
(2)如果启用变量延迟,用 ! 括起来的变量,就是需要动态捕获的目标变量,如果不需要,可以继续使用 % 括变量。

@echo off
setlocal enabledelayedexpansion
set var=-1
for /l %%i in (1 1 10) do (
    set var=%%i
    echo !var! 启用延缓环境变量,var的值是不断变化的,1->2->3,...,->10
    echo %var% 未启用延缓环境变量,var的值永远是初始化的-1
)

另外一个例子:

 

@echo off
setlocal enabledelayedexpansion
set python=python.exe
set code_e=e.code
set code_j=j.code

for /l %%i in (0,1,10) do (    
    set src=e.txt.wbr.bpe.%%i.out
    set tgt=j.txt.wbr.bpe.%%i
    start cmd /k  %python%  apply_bpe.py -c %code_j% -i !src! -o !tgt!
)

pause

 

posted on 2019-03-30 17:12  codeDog123  阅读(176)  评论(0编辑  收藏  举报

导航