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地址
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-04
@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,或者只截取这一段并输出? 

追答@echo off & color 0e & setlocal enabledelayedexpansion 
  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
 
 :: 已解决!!!!
 :: 中国批处理脚本联盟
 :: 望采纳!!!!

本回答被提问者和网友采纳
第2个回答  2021-05-31
运行一条命令时,它都会产生某种输出:要么是该命令的期望结果,或者是该命令执行细节的状态/错误消息。有些时候,你可能想要将某个命令的输出内容存储在一个变量中,以待在后续操作中取出来使用。

本文将介绍将 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 命令的输出赋值给变量的方法。你可以在下边的评论反馈区留下你的想法。
第3个回答  2019-01-11
@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变量并输出
第4个回答  2019-03-21
ipconfig|find "IPv4">ip.txt
(set/p a=)<ip.txt
set /i a=%a:*:=%
del ip.txt

感觉可能还能再简单些,不过这样已经够了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网