全局变量在Bat文件中的参数解析

时间:2017-03-29 23:56:07

标签: batch-file

是否可以在变量中使用参数?

我需要有一个全局变量,将在一些bat文件的开头使用。

设置变量

setx var "echo %~n0 %*"

sample.bat

%var% > lastBatExecuted.txt
set /p last=<lastBatExecuted.txt
if "%last%"=="%~n0 %*" echo it worked
pause

我知道一些方法可以通过解决方法或简单的复制粘贴来解决这个问题,但是希望有一个可以放在变量中的衬里。

(如果我仍然能够拨打%var%,那么长度不会有问题)

1 个答案:

答案 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时,相同的行为应该有效。