Batch file 为什么不是';t在bat脚本中传递给下标的my env变量
我有两个脚本: testEnv.bat:Batch file 为什么不是';t在bat脚本中传递给下标的my env变量,batch-file,Batch File,我有两个脚本: testEnv.bat: set TEST_VAR = "hello" call testEnvSub.bat testEnvSub.bat: echo %TEST_VAR% 当我运行testEnv.bat时,我只得到: “ECHO已打开” 所以很明显,我在testEnv中设置的env变量没有被传递给subscript。如何使其正确传递?问题:“很明显,我在testEnv中设置的env变量没有被传递到subscript。” 回答:一点也不,变量是创建的,
set TEST_VAR = "hello"
call testEnvSub.bat
testEnvSub.bat:
echo %TEST_VAR%
当我运行testEnv.bat时,我只得到:
“ECHO已打开”
所以很明显,我在testEnv中设置的env变量没有被传递给subscript。如何使其正确传递?问题:“很明显,我在testEnv中设置的env变量没有被传递到subscript。” 回答:一点也不,变量是创建的,您只是没有调用正确的变量名,因为您创建的变量不正确
问题:“如何让它正确通过?” 回答:与C+、Perl等不同,Windows
cmd
实际上使用空格作为变量名和值的一部分。因此,实际上,您创建了一个名为%TEST\u VAR%
的变量,而不是%TEST\u VAR%
,其值为“hello”
,包括前导空格
请注意,双引号在变量名之前开始,在值之后结束,以消除空格蠕变
@echo off
set "TEST_VAR=hello"
call testEnvSub.bat
另外,这并不是说它在执行上有多大区别,试着用
.cmd
扩展名来命名批处理文件,而不是用.bat
它有点过时。问题:“很明显,我在testEnv中设置的env变量没有被传递到subscript。”
回答:一点也不,变量是创建的,您只是没有调用正确的变量名,因为您创建的变量不正确
问题:“如何让它正确通过?” 回答:与C+、Perl等不同,Windows
cmd
实际上使用空格作为变量名和值的一部分。因此,实际上,您创建了一个名为%TEST\u VAR%
的变量,而不是%TEST\u VAR%
,其值为“hello”
,包括前导空格
请注意,双引号在变量名之前开始,在值之后结束,以消除空格蠕变
@echo off
set "TEST_VAR=hello"
call testEnvSub.bat
<>也不是说它在执行上有很大的差别,尝试用<代码> .CMD扩展来命名批处理文件,而不是<代码> .BAT 这是过时的。我不认为你正在做的是“通过”。被调用的脚本从父进程继承环境。因此,父流程中定义的任何变量都可用于子流程。如果你真的通过了变量,那么你会这样做:<代码>调用TESTNVB.BAT“%TestVaR %”< /C> >我不认为你正在做的是“通过”。被调用的脚本从父进程继承环境。因此,父流程中定义的任何变量都可用于子流程。如果您真的在传递变量,那么您可以这样做:
调用testEnvSub.bat“%test\u var%”