将Win XP命令行输出分配给变量

5
我想将以下脚本从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输出的变量 :-(


请正确标记您的请求。 - PierreBdR
你真的被DOS(XP Shell)卡住了吗?与Linux shell相比,它非常有限。如果可能的话,我强烈建议选择XP中可用的脚本语言之一(VBScript或jscript)。如果可能的话,最好安装PowerShell。您还可以安装Cygwin。 - EBGreen
3个回答

4

好的,问题已经解决。

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

这段代码基本上实现了我想要的功能。

你太棒了,谢谢!!!!


1
如果需要遍历命令输出的结果,可以使用for /f。类似这样:
for /f "usebackq" %%L in (`awk '/GPSID/ {print $3}' gora.RTK`) do (
    awk 'BEGIN {printf "Numer seryjny : " %%L,$1}' >> out.txt
)

抱歉,我不太熟悉 awk,但希望你能明白我的意思。 - Patrick Cuff

0

怎么样...

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

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

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


这就是你能够接近的程度了,但 OP 应该知道多行字符串不能存储在 DOS 变量中。 - EBGreen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接