[英]Return a value from batch files (.bat file)to a text file
我有一個.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
我希望將輸出變量ScriptOut存儲到文本文件中。 任何人都可以建議將任何方法添加到我現有的批處理文件中。
謝謝Maddy
我是否正確理解您的文件被覆蓋並且您想要附加? 如果是這樣,試試這個:
echo %ScriptOut% >> C:\ThreePartition\Sources\myfile.txt
(注意雙“>>”)
你在那里的for
循環執行該腳本並為腳本返回的每一行運行。 基本上這意味着您的環境變量%ScriptOut%
僅包含輸出的最后一行(因為每次循環處理另一行時它都會被覆蓋)。 所以如果你的腳本返回
a
b
c
然后%ScriptOut%
將只包含c
。 如果最后一行是空的或只包含空格,那么iot將有效地刪除%ScriptOut%
,這就是你做的時候的原因
echo %ScriptOut%
你只會得到ECHO is on.
因為在變量替換之后,剩下的就是echo
。 您可以使用
回聲。%ScriptOut%
在這種情況下,你將獲得一個空行(這將是%ScriptOut%
包含在那一點。
如果要打印腳本返回到文件的每一行,那么只需執行一個操作即可輕松完成
cscript C:\MyProj\Sources\SearchString.vbs > C:\ThreePartition\Sources\myfile.txt
如果你想將輸出附加到文件中,或者使用>>
進行重定向,正如Stanislav Kniazev指出的那樣 。
如果您只想存儲最后一個非空行,則以下內容可能有效:
for /f "delims=" %%a in ('C:\MyProj\Sources\SearchString.vbs') do (
if not "%%a"=="" set ScriptOut=%%a
)
只有在循環變量不為空的情況下才會設置%ScriptOut%
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.