BAT/CMD中将命令执行结果赋值给变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BAT/CMD中将命令执行结果赋值给变量相关的知识,希望对你有一定的参考价值。
如题,我想把ipconfig的执行结果赋值给变量a
1、将我们写好的定期清除旧数据的bat批处理文件拖到cmd命令窗口中。2、执行返回乱码报错,提示乱码字段非内部或外部命令,也不是科运行的程序或批处理文件。
3、我们打开批处理文件,批处理文件是用来定时删除1天前的zip的文件。
4、单独将语句粘贴到cmd命令行中,执行成功。
5、从新用其他字符集来写bat批处理文件即可。打开我们写好的批处理bat文件,选择文件,在文件的菜单中点击另存为选项。
6、我们将文件另存为ANSI编码的格式的bat批处理文件。
7、重新直接运行bat批处理文件或者在cmd中运行成功执行。
这句的意识是 运行ipconfig命令,并把结果通过管道命令 | 传给find命令查找将含有 ip address 字符的行 赋值给变量ip 并显示变量ip的值,/i是参数,意识是不区分大小写, ^ 符号是在批处理中,写入管道符号是要加入才行的去掉管道命令也能运行,但是结果是不一样的,你再另起一行,加一句pause来暂停,就能看到不同的结果了还有一点忘说了 tokens=15 意识是将每一行以空格作为分隔符,的第15例,的值赋值给变量ip总结:就是运行ipconfig命令,并把结果含有 ip address 字符的行,以空格为分隔符的第15例赋值给变量 %ip%,其实就是自己的ip地址 参考技术A @echo off & color 0d & setlocal enabledelayedexpansion
ipconfig>ip.txt
for /f "delims=" %%a in (ip.txt) do (
set ip=%%a
echo !ip!
)
pause>nul
:: 1. 将ipconfig的结果输出保存到文本
:: 2. 再用for语句把文本内的数据赋值给变量ip
:: 3. 最后在输出变量ip
:: 中国批处理脚本联盟追问
能不能只将红色的内容输出到1.txt,或者只截取这一段并输出?
ipconfig>ip.txt
for /f "delims=" %%a in (ip.txt) do (
for /f "tokens=1* delims=:" %%i in ('call echo %%a^|find /i "IPv4 地址"') do (
Echo %%a>>"1.txt"
)
)
del /s /q ip.txt & start 1.txt
exit
:: 已解决!!!!
:: 中国批处理脚本联盟
:: 望采纳!!!!本回答被提问者和网友采纳 参考技术B 运行一条命令时,它都会产生某种输出:要么是该命令的期望结果,或者是该命令执行细节的状态/错误消息。有些时候,你可能想要将某个命令的输出内容存储在一个变量中,以待在后续操作中取出来使用。
本文将介绍将 shell 命令赋值给变量的不同方法,这对于 shell 脚本编程是特别有用的。
可以使用如下形式的 shell 命令置换特性,将命令的输出存储到变量中:
变量名=$(命令) 变量名=$(命令 [命令选项 ...] 参数1 参数2 ...) 或者: 变量名=`命令` 变量名=`命令 [命令选项 ...] 参数1 参数2 ...`
以下是使用命令置换特性的示例:
本例,我们将 who (显示当前登录系统的用户) 的输出值存储到 CURRENT_USERS 变量中:
$ CURRENT_USERS=$(who)
然后,我们可以使用 echo 命令 显示一个句子并使用上述变量,如下:
$ echo -e "以下为登录到系统中的用户: $CURRENT_USERS"
上面的命令中:-e 标记表示解释所有的转义序列 (如 为换行)。为节约时间和内存,通常在 echo 命令 中直接使用命令置换特性,如下:
$ echo -e "以下为登录到系统中的用户: $(who)"

在 Linux 中显示当前登录系统的用户
接下来,为了演示上面提到的第二种形式,我们以把当前工作目录下文件数存储到变量 FILES ,然后使用 echo 来输出,如下:
$ FILES=`sudo find . -type f -print | wc -l` $ echo "当前目录有 $FILES 个文件。"

显示目中包含文件的数量
就是这些了。我们展示了将 shell 命令的输出赋值给变量的方法。你可以在下边的评论反馈区留下你的想法。 参考技术C @echo off
rem 开启延迟环境变量 如:!IP! 不用%IP%
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=: tokens=1,2*" %%a in ('ipconfig')do (
if "%%a" EQU " IPv4 地址 . . . . . . . . . . . . " (
set IP=%%b
echo IP4:!IP!
)
)
pause
:: 1. 用for语句把执行结果每行的数据赋值给变量%%a %%b,分割为 “:”
:: 2. 使用判断%%a的值是否为所取列
:: 3. 最后赋值IP变量并输出 参考技术D ipconfig|find "IPv4">ip.txt
(set/p a=)<ip.txt
set /i a=%a:*:=%
del ip.txt
感觉可能还能再简单些,不过这样已经够了
以上是关于BAT/CMD中将命令执行结果赋值给变量的主要内容,如果未能解决你的问题,请参考以下文章