用BAT让CMD连续之行2个命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用BAT让CMD连续之行2个命令相关的知识,希望对你有一定的参考价值。

就是先执行del h:\*.*
然后执行y

啥意思?y是什么?

直接一条就可以啦!

del /f /s /q /a h:\*.*
参考技术A del h:\*.* /q
或模仿你输入y
echo y|del h:\*.*
参考技术B Y是指什么,另一个批处理吗 参考技术C 在批处理文件中,所有变量如 %a 都要双写 %% ,也就是写成 %%a 等等。

for /f %%a in ('dir /a:d /b') do attrib +h %%a

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,或者只截取这一段并输出? 

追答@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
 
 :: 已解决!!!!
 :: 中国批处理脚本联盟
 :: 望采纳!!!!

本回答被提问者和网友采纳
参考技术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连续之行2个命令的主要内容,如果未能解决你的问题,请参考以下文章

bat命令中啥命令可以让某一行的指令重复执行

如何让cmd命令指定间隔时间执行1个命令

dos下执行bat文件,如何让两个命令之间自动延迟3秒后再继续执行?

如何用bat文件执行cmd命令?

解决CMD命令不能连续执行的问题

我要用bat批处理运行一个cmd的代码,请问怎么写?(内详)