2011-04-25 58 views
1

將變量寫入文件爲%VAR%,而不是變量的值,以及在重定向輸出時要求使任務列表正常工作。使用寫將變量寫入文件爲%VAR%不是BAT中變量的值

代碼IM到文件:

echo tasklist /FI "IMAGENAME eq %ZOEXT%" 2>NUL | find /I /N "%ZOEXT%">NUL >> boot.bat 
echo if "%ERRORLEVEL%"=="1" start /d "%ZODIR%" %ZOEXT% >> boot.bat 

結果:

tasklist /FI "IMAGENAME eq Zoiper.exe" 
if "0"=="1" start /d "C:\Documents and Settings\mgladman\Desktop\Zoip\Zoiper Communicator\" Zoiper.exe 

我想要什麼加入到boot.bat:

tasklist /FI "IMAGENAME eq %ZOEXT%" 2>NUL | find /I /N "%ZOEXT%">NUL 
if "%ERRORLEVEL%"=="1" start /d "%ZODIR%" %ZOEXT% 

如果你想我可以發佈整個代碼不只是分段,它是一個很酷的腳本:P只是有這個小問題。

我能想到的唯一「解決方法」就是製作第一個腳本,在第一個文件中回顯echo並寫入正確的系統數據(這必須是便攜式腳本,這樣才能工作, )

回答

2

如果您在命令行中,則可以使用^來跳過%

例如:

set var=test 
echo %var% 

呼應test

set var=test 
echo ^%var^% 

呼應%var%

在批處理文件,你必須使用雙% -

set var=1 
echo %%var%% 

回聲%var%

+0

謝謝你。我給你一個去... – user723205 2011-04-25 05:03:15

+0

不,你不能用'^'轉義'%',這隻能在cmd行上起作用,但原因是沒有變量名稱爲var ^'和擴展工作有點不同,比腳本內部 – jeb 2011-04-26 13:21:58

+0

你是對的。更新了我的答案。 +1。 – manojlds 2011-04-26 15:31:34

2

%可以用百分比在批處理內轉義。

echo %%var%% 

這不適用於命令行,因爲解析器的工作原理有點不同。
百分比不存在轉義字符,但百分比在變量不存在的情況下被預先設定。

set "var=" 
set "var2=content" 
echo %var% %%var2%% 

結果
%VAR%%含量%

0

要加倍百分號逃避他們,並使用插入記號逃脫大多數其他特殊字符。下面是我該怎麼做:

(echo tasklist /FI "IMAGENAME eq %%ZOEXT%%" 2^>NUL ^| find /I /N "%%ZOEXT%%"^>NUL)>>boot.bat 
(echo if "%%ERRORLEVEL%%"=="1" start /d "%%ZODIR%%" %%ZOEXT%%)>>boot.bat