问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在.bat脚本中如何将一个命令的返回结果传给一个变量?

发布网友 发布时间:2022-05-02 03:57

我来回答

5个回答

热心网友 时间:2022-06-27 23:37

1、首先用记事本新建一个文件夹。

2、然后在记事本里输入ipconfig /release和ipconfig /renew命令。

3、将文本另存为.bat为后缀的文件。

4、鼠标右键选中编辑好的脚本文件,选择以管理员方式运行。

5、这时我们电脑就会将一个命令的返回结果传给一个变量。

注意事项:

批处理文件的扩展名为bat 或cmd。目前比较常见的批处理包含两类:DOS批处理和PS批处理。应用于DOS和Windows系统中。

热心网友 时间:2022-06-27 23:38

1.首先用记事本创建一个新文件夹。

2.然后在记事本中输入ipconfig/release和ipconfig/renew命令。

3.将文本保存为带有bat后缀的文件。

4.右键点击zd选择编辑好的特殊脚本文件,选择以管理员身份运行。

5.此时,我们的计算机将把一个命令的结果返回给一个变量。

热心网友 时间:2022-06-27 23:38

延迟变量全称"延迟环境变量扩展",要理解这个东西,我们还得先理解一下什么叫扩展!

CMD在解释我们的命令的时候,首先会读取命令行一条完整的命令,然后对其进行一些命令格式的匹配操作,看你所输入的命令格式是不是符合他的要求.

如果我们要在我们的命令中引用一些变量,那么我们如何让CMD在解释我们的命令时,能识别出这个变量呢?这时我们就可以在变量名字两边加一个%号,如%name%.当CMD在对读取我们的整行
命令进行格式匹配的时候,就会发现name这个字符两边加了%号,就不会把他当作普通字符处理,
而是会把他当作一个变量处理,变量名叫name!然后CMD就会找到变量名对应的值,用变量名的值替换掉这个变量名字(name),(如果变量名不存在值,就返回空值).再将这个替换好并且匹配的命令执行!这个替换值的过程,就叫做变量扩展,说白了就是把变量的名字,用他的值给替换掉后执行!也就是批处理如何识别一个变量的过程.

(注意:这里只是变量的扩展的意思,不是延迟环境变量扩展,要理解延迟环境变量扩展,必须先理解什么是变量的扩展) 也就是批处理如何识别一个变量的过程. ~_~

例如这个一个BAT
set var=test
echo %var%

CMD在读取到echo %var%这句命令后,就会进行匹配操作,它马上就发现var字符两边有%号,这时他就会把他当作一个变量处理,查看这个var变量名是不是有值,如果有就用他的值把变量名var给替换掉,这里我们的VAR在上一条命令set var=test中,给var赋值为test,所以他会用test把%var%这个变量名替换掉,替换后的结果就为echo test了.这些步骤都是CMD进行匹配操作的步骤,匹配完后,他再执行echo test这条语句,这时我们的CMD中就会echo出一个test了.

什么是环境变量扩展知道了,那什么是延迟环境变量扩展呢?

在理解环境变量扩展时,我们知道CMD在解释命令时,首先会把一条完整的命令进行读取,然后进行匹配操作,匹配时他会把命令里的变量用变量的值个替换掉,然后执行这个替换好的命令.
问题就出在"一条完整的命令",在BAT中,IF FOR这样的命令都可以加括号,将一些命令嵌套在里面执行.这样的话对于一条可以加扩号嵌其他命令的命令,他的完整格式就是
for %%i in (....)这样一个整体.此时,如果我们如果在括号里面嵌入一些设置变量值的命令,就会出现问题了!

看例子
@echo off
for /l %%i in (1,1,5) do (
set var=%%i
echo %var%
)

执行后会显示5个空行的错误提示!为什么?根据我们上面说的知识来理解

@echo off
set var=test
for /l %%i in (1,1,5) do (
set var=%%i
echo %var%
)

这个就会打印5个test了.

通过这两个例子,大家因该已经理解,如果只有环境变量扩展这个过程的话,如果我们在可以嵌套命令的命令中执行赋值操作时,会让我们的BAT出现给变量赋值的问题.
那么这个时候"延迟环境变量扩展",这个概念就被提出来了

在批处理中,我们可以用setloacl ENABLEDELAYEDEXPANSION这个命令来启用"延迟环境变量扩展"

在我们启用了"延迟环境变量扩展"后,当CMD在解释涵有嵌套格式的命令时,他会把嵌套的命令一条一条的先执行一次,然后再进行匹配操作,这样我们的赋值操作就会完成.并且再"延迟环境变量扩展"启用后,CMD会用!号来判断这是不是一个变量,如没启用来变量用%name%这样的格式判断,启用后就用!name!这样的格式判断了,这个符号我们需要注意!

例子:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set var=test
for /l %%i in (1,1,5) do (
set var=%%i
echo !var!
)

这样大家因该明白什么是延迟环境变量扩展了吧.

再来一个例子

@echo off
set var=test & echo %test%
pause

这条命令放在一行,表示他是一条完整的命令,不启用"延迟环境变量扩展",就会出现上面的赋值错误!

改成这样
@echo off
setlocal ENABLEDELAYEDEXPANSION
set var=test & echo !var!
pause

很容易理解了吧!

热心网友 时间:2022-06-27 23:39

有个问题是,你需要确定,只返回一行数值,否则,它会只取最后一个。
for /f "delims=" %%i in ('netstat -a^|findstr 50000') do (set a=%%i)
echo %a%
pause

热心网友 时间:2022-06-27 23:39

模板:

cmd1 > tmp.dat

set /p var=<tmp.dat

结合问题后:

netstat -a|findstr 50000 > tmp.dat

set /p a=<tmp.dat

最后不需要tmp.dat

加上:

del tmp.dat

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
交通事故致人死亡,该如何处理? 爱普生LQ1600KIIIH 断色带 爱普生针式打印机LQ1600KⅢH近两月来总频繁中断打印,同时电脑显示是通讯... ACQUA DI PARMA 帕尔玛之水 蓝色地中海系列 桃金娘加州桂中性淡香水 E... 女士香水推荐-ACQUA DI PARMA 帕尔玛之水 优雅木兰女士浓香水 EDP 50... ACQUA DI PARMA帕尔玛之水克罗尼亚系列中性香水套装-适用对象 帕尔玛 | 必须拥有的小众沙龙香 ACQUA DI PARMA/帕尔玛之水克罗尼亚系列黑调男士古龙水-适用对象 ACQUA DI PARMA 帕尔玛之水 克罗尼亚系列 风度中性古龙水 EDC 20ml... ACQUA DI PARMA/帕尔玛之水-绅士男士古龙水EDC 怎么用bat得到一个命令执行后的返回值赋值给一个变量 bat批处理 使用runas执行某一命令后如何获得返回值? 50岁女性,每天经常潮热就有些出汗,请问有什么方法 一个手机怎么创建两个 怎样才能两个同时登录 五十岁了一阵阵轰热出可多汗该咋办? 一部手机两个怎么弄 如何同时使用两个 一个手机两个怎么切换 iPhone 6s plus(A1699)是不是三网通 北京市昌平区地方税务局的机构设置 双卡手机怎么用两个? 华为手机如何同时登录两个? 郑州考焊工证的考场在哪里 华为手机如何同时登录两个? 怎么分身两个 如何让腿变瘦? 小米粥有什么不一样的做法吗? 专利代理委托书问题 目前母婴网站排名和流量大的网站有哪几个 求一个bat脚本,判断一条命令执行的返回结果 求一个bat脚本检测PING,不通时运行添加路由,ping值返回无法访问目标主机或请求超时都需要运行添加路由 欧洲杯为什么没有巴西和阿根廷参加? 求个批量删除文件的bat命令 批量删除d:&#92;123 文件夹下所有子文件夹里的小于10K的html文件 bat应该怎么写 欧盟对外贸易出口额最多的国家是 A.日本 B.中国 C.美国 D.巴西 如何用BAT批处理更改指定ini文件内的指定内容 在批处理中怎么样将findstr查找的值赋值给变量? 巴西的欧洲一门主要以哪几个国家人为主 德国 巴西 爱尔兰 丹麦下列哪个国家属于美州? 批处理取cmd命令返回值 wmic bios get serialnumber 得到 SerialNumber XXXXXXX 把XXXXXXX赋给A 我想通过利于批处理来测试是否断网或者网络延时,然后根据返回值自动显示通或不通,网络延时大于80的也不 巴西属于那个大洲(欧洲 亚洲 美洲 非洲 大洋州) ping测试BAT,怎么自动显示延迟最低的一个 批处理中通过for获取wmic返回值,echo处于关闭状态 批处理怎样判断windows系统的版本 尿酸偏高是什么原因造成的? 头发容易掉容易断是什么原因 为什么最近的头发老是掉,而且又容易断? 泰国五位大帝分别是谁 头发容易掉容易断怎么办?