繁体   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