【CALL命令格式】
格式一:call [ [Drive:] [Path] FileName [Pararneters] ]
格式二:call [:label [arguments] ]
使用call命令,可以调用 FileName(包括批处理文件、其它执行命令)或 :label 标签
【在小括号内语句块(或复合语句)中的CALL命令的变量展开】
【格式一】call [ [Drive:] [Path] FileName [Pararneters] ]
1、在小括号内语句块(或复合语句)中,call命令(调用 FileName)的第一次变量展开使用变量直接展开
示例
::demo.bat
@echo off
setlocal DisableDelayedExpansion
set "mycomd=command"
set "command=where a.txt"
call %%%mycomd%%%
echo ---------------------------------------------------
:: 在小括号内语句块中测试
(
set "mycomd=delayedCommand"
set "delayedCommand=where b.txt"
REM 变量第一次展开使用直接展开,即:%mycomd%的结果为 %command%
REM 变量第二次展开使用延迟展开,即:%command% 展开为 where b.txt
call %%%mycomd%%%
)
echo ---------------------------------------------------
set "mycomd=command"
:: 在复合语句中测试
set "mycomd=delayedCommand" & set "delayedCommand=where c.txt" & call %%%mycomd%%%
运行
C:\>where a.txt b.txt c.txt
C:\a.txt
C:\b.txt
C:\c.txt
C:\>demo.bat
C:\a.txt