找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33802|回复: 4

[其他] [已解决]批处理如何将命令返回的结果赋值给变量?

[复制链接]
发表于 2016-1-14 10:17:10 | 显示全部楼层 |阅读模式
本帖最后由 nhcxl 于 2016-1-18 15:34 编辑

前几天针对命令执行后,将结果赋值给变量。两种方法可行:
set a=%a:^>nul^&dir /b%
set  "a=&dir /b"

但针对命令:grep -c -E "ERROR|Error|error" 检查系统网络健康状况-20151230-193330.txt用上述两种方式都无法正确赋值,不是无效,就是提示error不是命令。在解析过程中就被分割了。
grep是一个移植到dos下的unix命令,该命令快速得出文件中error等类似关键字的出现次数。
百思不得其解,请教各位大神,该命令结果赋值给一个变量的正确写法

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2016-1-14 10:37:20 | 显示全部楼层
  1. for /f "delims=" %%a in ('grep -c -E "ERROR^|Error^|error" 20151230-193330.txt') do set n=%%a
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2016-1-14 11:10:24 | 显示全部楼层
回复 2# flyinnet9

多谢,开始不想用for语句,担心会存在效率问题,仔细看了for命令,是另一个进程处理括号里的语句。先用这种方法吧。
最后正确脚本:
FOR /F "usebackq delims=="  %%i IN (`grep -c -E "ERROR|Error|error" 检查系统网络健康状况-20151230-193330.txt`) DO set a=%%i
不能少usebackq,否则会报grep错误,还未仔细研究究竟。
发表于 2023-2-24 16:24:12 | 显示全部楼层
@echo off && rem 直接将命令结果赋值给变量的简单方法
set/p a= |time/t
echo %a%
pause>nul

网上找的方法,但测试并没有得到值?是哪里出问题了
发表于 2023-2-25 22:14:58 | 显示全部楼层
回复 4# tiandyoin


    你找的那个方法是错的。正确的方法请参考2楼代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 13:36 , Processed in 0.021946 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表