2009-04-10 124 views
3

我有如下所示從批處理文件(.bat文件)的值返回到一個文本文件

@echo off 
for /f "delims=" %%a in ('C:\MyProj\Sources\SearchString.vbs') do (
set ScriptOut=%%a) 
#echo Script Result = %ScriptOut% 
echo %ScriptOut% >C:\ThreePartition\Sources\myfile.txt 

.bat文件我想我的輸出變量,它是ScriptOut被存儲到一個文本文件中。 任何人都可以提出任何方法添加到我現有的批處理文件。

感謝 馬迪

回答

2

難道我理解正確的話,你的文件被覆蓋,並且您想要追加?如果是的話,試試這個:

echo %ScriptOut% >> C:\ThreePartition\Sources\myfile.txt 

(注意雙「>>」)

+0

喜, 無其實我得到一個返回值來ScriptOut(FRM返回VBS)應寫入file.When我運行這個上面代碼的文本,我只是得到ECHO是關着的myfile.txt的 – Maddy 2009-04-10 09:30:26

2

for循環你有沒有執行該腳本並運行每一行腳本的回報。基本上這意味着您的環境變量%ScriptOut%僅包含輸出的最後一行(因爲每次循環處理另一行時它都會被覆蓋)。所以,如果你的腳本返回

a 
b 
c 

然後%ScriptOut%將只包含c。如果最後一行是空的或只包含空格物聯網將有效地刪除%ScriptOut%這就是爲什麼當你做一個

echo %ScriptOut% 

自變量substition後,所有剩下的有echo你只能得到ECHO is on.。您可以使用

回聲%ScriptOut%

在這種情況下,你會得到一個空行(這是什麼%ScriptOut%包含在這一點上。

如果你想打印每行的腳本返回到一個文件,那麼你可以做到這一點很容易通過簡單地做一個

cscript C:\MyProj\Sources\SearchString.vbs > C:\ThreePartition\Sources\myfile.txt 

,或者如果你想輸出附加到文件,如Stanislav Kniazev pointed out使用>>重定向。

如果您只想儲存最後非空線,那麼下面可能的工作:

for /f "delims=" %%a in ('C:\MyProj\Sources\SearchString.vbs') do (
    if not "%%a"=="" set ScriptOut=%%a 
) 

這將只設置%ScriptOut%的情況下,循環變量是不是空的。

相關問題