2009-04-10 159 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%的情况下,循环变量是不是空的。

相关问题