【问题标题】:cmd console output to variablecmd控制台输出到变量
【发布时间】:2012-09-18 00:39:33
【问题描述】:

我有一些工具可以将一些数据直接输出到控制台输出。

我想将此输出保存到某个变量,然后将其传递给其他地方...

可以吗?

例子:

rem this outputs String1 values from myfile.txt
GetString myfile.txt String1
rem I want this value for example in %p% variable, and then:
call MyApp %p%

【问题讨论】:

    标签: batch-file cmd windows-console


    【解决方案1】:

    你可以试试这个

    for /f %%a in ('GetString myfile.txt') do call MyApp %%a
    

    虽然我不太确定您所说的 String1 位是什么意思,但如果这不正确,您能澄清一下吗?

    【讨论】:

    • String1 的意思类似于:String1='我需要的值'。 IE。 GetString myfile.txt String1 将“我需要的值”输入输出。使用的好主意。我在想那个。但是,就像克里斯蒂安所说的那样,有时会有自己的问题......但是谢谢,也许那个适合我!
    • +1,虽然不需要 p 变量。 for /f %%a in ('GetString myfile.txt') do call MyApp %%a
    【解决方案2】:

    一般来说,我建议遵循@Balic C 的答案,因为它无需临时文件即可工作。然而,for 命令存在问题(或者至少很难正确处理),当命令或参数或两者都包含空格并且您需要处理正确的引用时。

    在这种情况下,您还可以将工具的输出存储在临时文件中,然后使用set /P 将其读入变量:

    set temp_file=%TEMP%\%~n0.tmp
    GetString myfile.txt > "%temp_file%"
    set /P p=<"%temp_file%"
    
    call MyApp %p%
    
    del /F "%temp_file%" 
    

    【讨论】:

    • 也是不错的选择。谢谢! ..哦。现在很难决定哪个答案是最好的:)
    • 再次,我会先尝试@BaliC 的方法。因为它在没有临时文件的情况下工作。