bat 批处理技巧:执行命令输出到变量及重定向到多个文件

bat 批处理技巧:执行命令输出到变量及重定向到多个文件

使用批处理很多时候会遇到需要执行其他程序,并将结果临时保存,再做处理的情况,比如还需要输出到多个地方。

比较笨的办法就是多次执行命令,再分别重定向输出。例如:

systeminfo | findstr "KB"> 1.txt
systeminfo | findstr "KB"> 2.log
systeminfo | findstr "KB"> 3.somefile

假设执行的程序性能消耗高或者比较慢,则是一个比较痛苦的过程。
将输出临时保存到变量,是不错的办法。在bat的编写语法下,使用循环将命令的输出赋值给变量

for /f "delims=" %%a in (待执行的命令) do (循环体内的操作)

注意:

  • delims指定的是分割符,不写的话就默认为空格,这里指定不分割,就保留了全部输出
  • 命令执行后控制台输出的结果赋值给了此处的%%a变量。
  • 这里变量的赋值是一行一行的,并不是整个输出全部赋值。因此如果控制台输出有多行,接下来需要在循环体内对这个变量进行后续的操作
  • 循环可以嵌套,上一层的%%a可以代入到下一层的循环引用。

输出到文件时,重定向符号>对于文件是覆盖写操作,如果要追加写,使用两个箭头>>。所以上面的例子完整写法是:

for /f "delims= " %%a in ('systeminfo ^| findstr "KB"') do ( 
    echo %%a >> 1.txt
    echo %%a >> 2.log
    echo %%a >> 3.somefile
)

注意:bat文件里转义符号是^,不是正则表达式里的斜杠\

这样实际执行外部程序(这里是systeminfo)只有一次,临时保存到变量之后在输出到3个不同的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值