将批处理文件(.bat文件)中的值返回到文本文件

我有一个.bat文件如下所示
@echo off 
for /f "delims=" %%a in ('C:MyProjSourcesSearchString.vbs') do (
set ScriptOut=%%a)
#echo Script Result = %ScriptOut%
echo %ScriptOut% >C:ThreePartitionSourcesmyfile.txt
我希望将输出变量ScriptOut存储到文本文件中。 任何人都可以建议将任何方法添加到我现有的批处理文件中。 谢谢 马迪     
已邀请:
我是否正确理解您的文件被覆盖并且您想要附加?如果是这样,试试这个:
echo %ScriptOut% >> C:ThreePartitionSourcesmyfile.txt
(注意双“>>”)     
你在那里的
for
循环执行该脚本并为脚本返回的每一行运行。基本上这意味着您的环境变量
%ScriptOut%
仅包含输出的最后一行(因为每次循环处理另一行时它都会被覆盖)。所以如果你的脚本返回
a
b
c
那么
%ScriptOut%
只包含
c
。如果最后一行为空或仅包含空格,则会有效删除
%ScriptOut%
,这就是为什么当你这样做的时候
echo %ScriptOut%
你只会得到
ECHO is on.
,因为变量后的所有剩下的都是
echo
。您可以使用 回声。%ScriptOut% 在这种情况下,你将得到一个空行(这将是
%ScriptOut%
包含在那一点。 如果要打印脚本返回到文件的每一行,那么只需执行一个操作即可轻松完成
cscript C:MyProjSourcesSearchString.vbs > C:ThreePartitionSourcesmyfile.txt
如果你想将输出附加到文件中,或者使用
>>
进行重定向,正如Stanislav Kniazev指出的那样。 如果您只想存储最后一个非空行,则以下内容可能有效:
for /f "delims=" %%a in ('C:MyProjSourcesSearchString.vbs') do (
  if not "%%a"=="" set ScriptOut=%%a
)
如果循环变量不为空,则只设置
%ScriptOut%
。     

要回复问题请先登录注册