2013-04-08 168 views
0

我需要將一些參數從蝙蝠,file1.bat傳遞到另一蝙蝠,file2.bat。問題是@echo %2裏面的file2.bat顯示""來自prompt命令,所以在file1.bat裏定義的名爲secondVar的變量沒有按原樣發送,而第一個參數總是發送成功。將參數從蝙蝠傳遞到蝙蝠(環境變量)

我卡在這裏因此我不能繼續。 的目標調用file2.bat「aFile」!secondVar! 正在爲每個secondVar搜索secondVar變量爲aFile。

請有人能告訴我發生了什麼,並給我正確的東西。非常感謝您提前!

file2.bat樣子:

@echo off 
echo %2 
Set arg1=%1 
echo %arg1% 
cscript process.vbs %1>result 
more +1 %1|findstr /I /r /b /C:"^T.*=%2">viewout 

file1.bat樣子:

@echo off & setLocal 
SETLOCAL EnableDelayedExpansion 
set secondVar=%secondVar% 

for /f "tokens=*" %%a in (myFile) do (set secondVar="%%a" 
echo !secondVar! 
call file2.bat "aFile" !secondVar! 
) 
+0

是否變量出現在file1.bat中的'echo!secondVar!'中? – user2033427 2013-04-08 10:56:07

+0

是的,它出現在file.bat的控制檯上。但它從file1.bat調用file2.bat時不檢索 – tamo 2013-04-08 11:00:23

+0

我發現我的錯誤。而不是寫'set secondVar ='%% a「'到file1.bat中,我寫了'set secondVar = %% a'(%% a沒有引號,它現在工作正常!)。即使我不知道爲什麼!感謝所有 – tamo 2013-04-08 12:20:11

回答

0

File1.bat,改變

set secondVar="%%a" 

set secondVar="%%~a" 

使用該波浪字符首先去除封閉雙引號的...

你也可以使用:一套 「secondVar = %%〜一個」

+0

您的解決方案的使用遇到了一些問題。如果變量'a'在(myFile)中遇到了「我有早餐」,即使在file1.bat中,echo!secondVar!也只有「I」在file2.bat中出現(請參閱echo%2)!按預期顯示「我有早餐」。這對我來說很奇怪!同樣,用「k^cd ^」替換變量'a'顯示「k^cd ^」與file1.bat一樣,但在file2.bat中刪除「^」顯示「kcd」 – tamo 2013-04-08 14:32:11