簡體   English   中英

將批處理文件(.bat文件)中的值返回到文本文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM