有关将变量从一个批处理文件传递到另一个批处

时间:2017-08-10 09:54:31

标签: batch-file

我知道在这方面有类似的话题,但这有点不同。我在网上看过,有些方法可以使用%~来传递变量。我想传递许多变量,例如:

BATCH FILE 1:

@echo off


set file_var1=world
set file_var2=%computername%
set file_var3=hehexd
set file_var4=yolo
set file_var5=h
set file_var6=he
set file_var7=heh
set file_var8=hehe
set file_var9=hehex
set file_var10=hehexd
set file_var11=hehexd1
set file_var12=hehexd12
set file_var13=hehexd123
set file_var14=hehexd1234
set file_var15=hehexd12345
set file_var16=hehexd123456
set file_var17=hehexd1234567
set file_var18=hehexd12345678
set file_var19=hehexd123456789
set file_var20=hehexd1234567890



call arg_batch2.bat %file_var1% %file_var2% %file_var3% %file_var4% %file_var5% %file_var6% %file_var7% %file_var8% %file_var9% %file_var10% %file_var11%  

BATCH FILE 2:

@echo off
set arg1=%~1
set arg2=%~2
set arg11="%~11"

echo Hello, %arg1% AND %arg2% ! My name is %arg11%.
PAUSE

我应该得到hehexd1的结果。但是我意识到结果是world1。有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

要回答有关您收到的结果为world1而不是hehexd1的原因的问题,以下行未将arg11设置为传递给arg_batch2.bat的第11个参数将它设置为第一个参数后跟字符1.这是因为正如@Stephan所提到的那样,除非你将它们移过来,否则只有九个参考引用。

set arg11="%~11"

由于第一个参数为world,因此结果为world + 1 = world1