【WINDOWS / DOS 批处理】call命令的变量延迟展开特性

 call命令详解 

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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值