是否可以在变量中使用参数?
我需要有一个全局变量,将在一些bat文件的开头使用。
设置变量
setx var "echo %~n0 %*"
sample.bat
%var% > lastBatExecuted.txt
set /p last=<lastBatExecuted.txt
if "%last%"=="%~n0 %*" echo it worked
pause
我知道一些方法可以通过解决方法或简单的复制粘贴来解决这个问题,但是希望有一个可以放在变量中的衬里。
(如果我仍然能够拨打%var%
,那么长度不会有问题)
答案 0 :(得分:1)
是的,此方法有效,但您需要使用双百分号定义变量值,并插入另一个call
命令,以便在第一次%var%
扩展后重新评估百分号。见这个测试:
@echo off
setlocal
set "var=echo One: %%~n0 %%*"
%var%
call %var%
set "var=call echo Two: %%~n0 %%*"
%var%
用法示例:
C:\> test Arg1 Arg2
输出
One: %~n0 %*
One: test Arg1 Arg2
Two: test Arg1 Arg2
通过var
命令定义setx
时,相同的行为应该有效。