【问题标题】:ASSIGN win XP commandline output to variable分配 win XP 命令行输出到变量
【发布时间】:2010-10-06 22:46:08
【问题描述】:

我想将以下脚本从 linux shell 转换为 Windows XP shell

GPSID=$(awk '/GPSID/ {print $3}' gora.RTK ) 
awk -v variable=${GPSID} 'BEGIN {printf "Numer seryjny : " variable,$1}' >>out.txt

第二行已翻译;问题在于在 Windows 中定义一个包含 shell 输出的变量:-(

【问题讨论】:

  • 请正确标记您的请求
  • 你真的坚持使用 DOS (XP Shell) 吗?与 linux shell 相比,它受到严重限制。如果可能的话,我强烈建议使用 XP 中可用的一种脚本语言(VBScript 或 jscript)。或者如果可能的话甚至更好地安装powershell。你也可以安装 cygwin。

标签: windows linux shell awk translation


【解决方案1】:

好的问题已解决

for /f "tokens=*" %%a in ('awk "/GPSID/ {print $3}" gora.RTK ') do set var=%%a
awk "BEGIN {printf \"GPSID : \" }" >out.txt
echo %var% >>out.txt

这段代码基本上做了我想做的事。

谢谢你!!!!!!

【讨论】:

    【解决方案2】:

    如果需要通过命令的输出进行递归,可以使用for /f。比如:

    for /f "usebackq" %%L in (`awk '/GPSID/ {print $3}' gora.RTK`) do (
        awk 'BEGIN {printf "Numer seryjny : " %%L,$1}' >> out.txt
    )
    

    【讨论】:

    • 对不起,我不精通awk,但希望你能明白。
    【解决方案3】:

    怎么样...

    for /f "tokens=*" %%a in ('echo Hello World') 设置 var=%%a

    注意:在命令行上尝试时使用 %a 而不是 %%a,如果在批处理文件中使用,则将其保留为 %%a。

    其中“echo Hello World”是您要捕获其输出的命令,“var”是将存储输出的变量的名称。

    【讨论】:

    • 这是尽可能接近的,但 OP 应该知道多行字符串不能存储在 DOS 变量中。
    猜你喜欢
    • 1970-01-01
    • 2012-02-23
    • 2012-07-16
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2014-01-08
    • 2011-01-28
    相关资源
    最近更新 更多