batch批处理笔记

1.基础命令

使用help命令查看结果集 结果集

1. echo 和 @
回显命令
@  #关闭单行回显
echo off  #从下一行开始关闭回显
@echo off  #从本行开始关闭回显。一般批处理第一行都是这个
echo on #从下一行开始打开回显
echo #显示当前是 echo off 状态还是 echo on 状态
echo. #输出一个”回车换行”,空白行 同echo, echo; echo+ echo[ echo] echo/ echo
bash使用\换命令行  bat使用^换命令行
@echo %i #加@符号 多个输出行时连续打印

2. errorlevel
echo %errorlevel%
每个命令运行结束,可以用这个命令行格式查看返回码;默认值为0,一般命令执行出错会设errorlevel为非0值
重置错误码输入 cd.

3. dir
显示文件夹内容
dir #显示当前目录中的文件和子目录
dir /a #显示当前目录中的文件和子目录,包括隐藏文件和系统文件
dir  /a:d #显示C盘当前目录中的目录
dir  /a:-d #显示C盘根目录中的文件 -d排除目录
dir /b/p #/b只显示文件名,/p分页显示
dir *.exe /s #显示当前目录和子目录里所有的.exe文件  /s显示指定目录和所有子目录中的文件。
  :后跟着属性   D  目录                R  只读文件
               H  隐藏文件            A  准备存档的文件
               S  系统文件            I  无内容索引文件
               L  重新分析点          O  脱机文件
               -  表示“否”的前缀

4. cd
cd 	#进入C盘
cd/		#进入根目录

5. md/mkdir
创建目录
md d:\a\b\c #如果目录不存在 则创建

6. rd/rmdir
删除目录
rd abc #删除当前目录里的 abc 子目录,要求为空目录
rd /s/q d:\temp #删除 d:\temp 文件夹及其子文件夹和文件,强制删除所有
/S      除目录本身外,还将删除指定目录下的所有子目录和文件。用于删除目录树。
/Q      安静模式,带 /S 删除目录树时不要求确认

7. del
删除文件
del d:\a.txt #删除指定文件,不能是隐藏、系统、只读文件
del /q/a/f d:\temp*.*	#删除 d:\temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不删除子目录
del /q/a/f/s d:\temp*.*	#删除 d:\temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不删除子目录
  /P            删除每一个文件之前提示确认。
  /F            强制删除只读文件。
  /S            删除所有子目录中的指定的文件。
  /Q            安静模式。删除全局通配符时,不要求确认
  /A            根据属性选择要删除的文件
                
8. ren
重命名命令
ren d:\temp tmp #支持对文件夹的重命名

9. cls
清屏

10. type
显示文件内容

11. copy
拷贝文件
copy a.txt d:\test.bak	#复制 a.txt 文件到 d:\ ,并重命名为 test.bak
copy con a.txt		#从屏幕上等待输入,按 Ctrl+Z 结束输入,输入内容存为a.txt文件;类似bash的 cat > catfile 
`con代表屏幕,prn代表打印机,nul代表空设备
copy nul a.txt		#将文件置空/创建空文件 置空的话需要输入Yes怎么解决? echo Y|copy nul a.txt;或者使用copy /y强制覆盖
copy 1.txt+2.txt 3.txt	#合并1.txt和2.txt的内容,保存为3.txt文件,如果不指定 3.txt ,则保存到 1.txt;批量也可以copy * destination
copy a.txt +		#复制文件到自己,实际上是修改了文件日期

12. title
设置cmd窗口的标题
title 新标题 #可以看到cmd窗口的标题栏变了

13. ver
显示系统版本

14. label 和 vol
设置卷标
vol #显示卷标
label #显示卷标,同时提示输入新卷标

15. 
pause 就是暂停命令,执行时会在命令行窗口显示“请按任意键继续. . .” 并等待你按键。 pause > nul的作用是同样的,区别是不打印“请按任意键继续. . .” ,nul相当于空文件,把这些文字隐去了。 

16. rem 和 ::
注释命令
注释行不执行操作

17. date 和 time
日期和时间
date #显示当前日期,并提示输入新日期,按"回车"略过输入
date /t #只显示当前日期,不提示输入新日期
time #显示当前时间,并提示输入新时间,按"回车"略过输入
time /t #只显示当前时间,不提示输入新时间

18. goto 和 :
跳转命令
:label #行首为:表示该行是标签行,标签行不执行操作
goto label #跳转到指定的标签那一行

19. find (外部命令)
查找命令
find "abc" a.txt		#在 a.txt 文件里查找含 abc 字符串的行 如果找不到,将设 errorlevel 返回码为1
find /i “abc” a.txt	#查找含 abc 的行,忽略大小写
find /c "abc" a.txt	#显示含 abc 的行的行数

20. more (外部命令)
逐屏显示
more a.txt #逐屏显示 c:a.txt 的文件内容

21. tree
显示目录结构
tree d: #显示D盘的文件目录结构

22. &
顺序执行多条命令,而不管命令是否执行成功;和bash不同 bash是;

23. &&
顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令
find "ok" a.txt && echo 成功		#如果找到了"ok"字样,就显示"成功",找不到就不显示

24. ||
顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令
find "ok" a.txt || echo 不成功		#如果找不到"ok"字样,就显示"不成功",找到了就不显示

25. |
管道命令
dir * /s/a | find /c ".exe"	#/s列出当前文件夹以及子文件夹;/c统计个数
echo Y|copy nul a.txt
type a.txt|more		#这个和 more a.txt 的效果是一样的

26. > 和 >>   输出重定向命令
>清除文件中原有的内容后再写入 >>追加内容到文件末尾,而不会清除原有的内容
echo hello world>con	#在屏幕上显示hello world
copy a.txt f:\ >nul	#拷贝文件,并且不显示"文件复制成功"的提示信息,但如果f盘不存在,还是会显示出错信息
copy a.txt f:\ >nul 2>nul	#不显示信息;正确或者错误信息都是输入到nul
echo ^^W ^> ^W>a.txt			#生成的文件内容为 ^W > W   ^和>是控制命令,要把它们输出到文件,必须在前面加个 ^ 符号

27. <
从文件中获得输入信息,而不是从屏幕上 一般用于 date time label 等需要等待输入的命令

28. %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*  命令行传递给批处理的参数
%0 批处理文件本身
%1 第一个参数
%9 第九个参数
%* 从第一个参数开始的所有参数
批参数(%n)的替代已被增强。您可以使用以下语法:
%~1 - 删除引号, 扩充 %1
%~f1 - 将 %1 扩充到一个完全合格的路径名
%~d1 - 仅将 %1 扩充到一个驱动器号
%~p1 - 仅将 %1 扩充到一个路径
%~n1 - 仅将 %1 扩充到一个文件名
%~x1 - 仅将 %1 扩充到一个文件扩展名
%~s1 - 扩充的路径指含有短名
%~a1 - 将 %1 扩充到文件属性
%~t1 - 将 %1 扩充到文件的日期/时间
%~z1 - 将 %1 扩充到文件的大小
%~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1扩充到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串
可以组合修定符来取得多重结果:
%~dp1 - 只将 %1 扩展到驱动器号和路径
%~nx1 - 只将 %1 扩展到文件名和扩展名
%~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,并扩展到找到的第一个文件的驱动器号和路径。
%~ftza1 - 将 %1 扩展到类似 DIR 的输出行。
#可以参照 call /? 或 for /? 看出每个参数的含意

29. if
IF [NOT] ERRORLEVEL number command	#ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出代码,指定条件为 true。
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
ELSE 子句必须出现在同一行上的 IF 之后(否则换行有问题 要用换行符^)。
    IF EXIST filename. (			   
        del filename.			
    ) ELSE (	`注意空格			
        echo filename. missing.			
    )								
    EQU - 等于
    NEQ - 不等于
    LSS - 小于
    LEQ - 小于或等于
    GTR - 大于
    GEQ - 大于或等于`
if "%1"=="/a" echo 第一个参数是/a
if /i "%1" equ "/a" echo 第一个参数是/a	#/i 表示不区分大小写,equ 和 == 是一样的,其它运算符参见 if/?
if exist test.bat echo 存在test.bat文件

30. setlocal(开始本地变量) 和 endlocal(结束本地变量) `参考31.set`
设置”命令扩展名”和”延缓环境变量扩充”
setlocal enableextensions #启用"命令扩展名"
setlocal disableextensions #停用"命令扩展名"
setlocal enabledelayedexpansion #启用"延缓环境变量扩充"
setlocal disabledelayedexpansion #停用"延缓环境变量扩充"
endlocal #恢复到使用setlocal语句以前的状态
“命令扩展名”默认为启用
“延缓环境变量扩充”默认为停用
批处理结束系统会自动恢复默认值
可以修改注册表以禁用"命令扩展名",详见 cmd /? 。所以用到"命令扩展名"的程
序,建议在开头和结尾加上 SETLOCAL ENABLEEXTENSIONS 和 ENDLOCAL 语句,以确
保程序能在其它系统上正确运行
"延缓环境变量扩充"主要用于 if 和 for 的符合语句,在 set 的说明里有其实用例程

31. set
设置变量
引用变量可在变量名前后加 % ,即 %变量名%
set #显示目前所有可用的变量,包括系统变量和自定义的变量
echo %SystemDrive% #显示系统盘盘符。系统变量可以直接引用
set p #显示所有以p开头的变量,要是一个也没有就设errorlevel=1
set p=aa1bb1aa2bb2 #设置变量p,并赋值为 = 后面的字符串,即aa1bb1aa2bb2
echo %p% #显示变量p代表的字符串,即aa1bb1aa2bb2
echo %p:~6% #显示变量p中第6个字符以后的所有字符,即aa2bb2
echo %p:~6,3% #显示第6个字符以后的3个字符,即aa2
echo %p:~0,3% #显示前3个字符,即aa1
echo %p:~-2% #显示最后面的2个字符,即b2
echo %p:~0,-2% #显示除了最后2个字符以外的其它字符,即aa1bb1aa2b
echo %p:aa=c% #用c替换变量p中所有的aa,即显示c1bb1c2bb2
echo %p:aa=% #将变量p中的所有aa字符串置换为空,即显示1bb12bb2
echo %p:*bb=c% #第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2
set p=%p:*bb=c% #设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2
set /a p=39 #设置p为数值型变量,值为39
set /a p=39/10 #支持运算符,有小数时用去尾法,39/10=3.9,去尾得3,p=3
set /a p=p/10 #用 /a 参数时,在 = 后面的变量可以不加%直接引用
set /a p=”1&0″ #”与”运算,要加引号。其它支持的运算符参见set/?
set p= #取消p变量
set /p p=please input:		#设置成键盘读取
set /p /a p=please input:	#/p参数在前

`begin------------------------
注意变量在 if 和 for 的复合语句里是一次性全部替换的,如
@echo off
set p=aaa
if %p%==aaa (
echo %p%
set p=bbb
echo %p%
)
结果将显示
aaa
aaa
因为在读取 if 语句时已经将所有 %p% 替换为aaa 这里的"替换",在 /? 帮助里就是指"扩充"、"环境变量扩充";可以启用”延缓环境变量扩充”,用!来引用变量,即!变量名!
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set p=aaa
if %p%==aaa (
echo %p%
set p=bbb
echo !p!
)
ENDLOCAL
结果将显示
aaa
bbb
`end-----------------------------

还有几个动态变量,运行set看不到;参考set /?
%CD% #代表当前目录的字符串
%DATE% #当前日期
%TIME% #当前时间
%RANDOM% #随机整数,介于0~32767
%ERRORLEVEL% #当前 ERRORLEVEL 值
%CMDEXTVERSION% #当前命令处理器扩展名版本号
%CMDCMDLINE% #调用命令处理器的原始命令行
可以用echo命令查看每个变量值,如 echo %time%
注意 %time% 精确到毫秒,在批处理需要延时处理时可以用到

批处理中调用外部程序的命令,否则等外部程序完成后才继续执行剩下的指令

33. call
批处理中调用另外一个批处理的命令,否则剩下的批处理指令将不会被执行,有时有的应用程序用start调用出错的,也可以call调用

34. choice (外部命令)
在一个批程序中使用 ERRORLEVEL 参数时,将参数降序排列
#eg:
@ECHO OFF
:BEGIN
CHOICE /c abc /m "please select"	#/c自定义字符,erroelevel的值从1开始;/m 打印内容
IF %ERRORLEVEL%==3 GOTO END
IF %ERRORLEVEL%==2 GOTO two
IF %ERRORLEVEL%==1 GOTO one
:one
ECHO 1
GOTO BEGIN
:two
ECHO 2
GOTO BEGIN
:END
ECHO over

35. pushd 和 popd
切换当前目录
@echo off
c: & cd & md mp3 #在 C: 建立 mp3 文件夹
md d:mp4 #在 D: 建立 mp4 文件夹
cd /d d:mp4 #更改当前目录为 d:mp4
pushd c:mp3 #保存当前目录,并切换当前目录为 c:mp3
popd #恢复当前目录为刚才保存的 d:mp4

36. for
循环命令这个比较复杂,请对照 for/? 来看
for %%i in (c:\ d:\ e:\ f:\) do echo %%i #依次调用小括号里的每个字符串,执行 do 后面的命令 注意%%i,在批处理中 for 语句调用参数用2个% 默认的字符串分隔符是"空格键","Tab键","回车键"
for %%i in (*.txt) do find "abc" %%i	#对当前目录里所有的txt文件执行 find 命令
for /r . %%i in (*.txt) do find "abc" %%i	#在当前目录和子目录里所有的.txt文件中搜索包含 abc 字符串的行
for /r . %%i in (.) do echo %%~pni	#显示当前目录名和所有子目录名,包括路径,不包括盘符
for /r d:\mp3 %%i in (*.mp3) do echo %%i>>d:\mp3.txt	#把 d:\mp3 及其子目录里的mp3文件的文件名都存到 d:\mp3.txt 里去
for /l %%i in (2,1,8) do echo %%i	#生成2345678的一串数字,2是数字序列的开头,8是结尾,1表示每次加1
for /f %%i in ('set') do echo %%i	#对 set 命令的输出结果循环调用,每行一个
for /f "eol=P" %%i in ('set') do echo %%i	#取 set 命令的输出结果,忽略以 P 开头的那几行
for /f %%i in (d:\mp3.txt) do echo %%i	#显示 d:\mp3.txt 里的每个文件名,每行一个,不支持带空格的名称
for /f "delims=" %%i in (d:\mp3.txt) do echo %%i	#显示 d:\mp3.txt 里的每个文件名,每行一个,支持带空格的名称
for /f "skip=5 tokens=4" %%a in ('dir') do echo %%a	#对 dir 命令的结果,跳过前面5行,余下的每行取第4列 每列之间的分隔符为默认的"空格" 可以注意到 dir 命令输出的前5行是没有文件名的
for /f "tokens=1,2,3 delims=- " %%a in ('date /t') do (
echo %%a
echo %%b
echo %%c
)
对 date /t 的输出结果,每行取1、2、3列
第一列对应指定的 %%a ,后面的 %%b 和 %%c 是派生出来的,对应其它列
分隔符指定为 - 和"空格",注意 delims=- 后面有个"空格"
其中 tokens=1,2,3 若用 tokens=1-3 替换,效果是一样的
for /f "tokens=2* delims=- " %%a in ('date /t') do echo %%b
取第2列给 %%a ,其后的列都给 %%b

37. subst (外部命令)
映射磁盘。
subst z: serverd #这样输入z:就可以访问serverd了
subst z: /d #取消该映射
subst #显示目前所有的映时

38. xcopy (外部命令)
文件拷贝
xcopy d:\mp3 e:\mp3 /s/e/i/y	#复制 d:\mp3 文件夹、所有子文件夹和文件到 e: ,覆盖已有文件加 /i 表示如果 e: 没有 mp3 文件夹就自动新建一个,否则会有询问

39. net

40.

2. for命令的补充

参考教程

1.在cmd窗口中使用,变量名必须用单%引用(即:%variable);在批处理脚本中使用,变量名必须用双%引用(即:%%variable)
2.for、in和do 三个关键字缺一不可
3.for命令的形式变量只能是26个字母中的任意一个
4.字母区分大小写(即就是 %%a 和 %%A 是两个不同的变量名)

2.1 for /l

for /l l是指loop,即循环的意思。完整格式:for /l %variable in (start,step,end) do command [command-parameters]
[1] start指起始值;step指步间距;end指终止值。
[2] start、step和end都只能取整数(正负皆可)。
[3] 步间距step的值不能为0。
[4] 当步间距step的值为正整数时,终止值end不能小于初始值start。
[5] 当步间距step的值为负整数时,终止值end不能大于初始值start。
具体含义:从start开始计数,以step为步长,直至最接近end的那个整数值为止,这之间有多少个数,do后的语句就执行多少次。
当循环次数确定的时候,首选for /l语句,也可使用goto语句但不推荐;
当循环次数不确定的时候,用goto语句将是唯一的选择,因为,这个时候需要用if之类的条件语句来判断何时结束goto跳转。

@echo off
for /l %%i in (1,2,10) do @echo %%i		#1开始 步长2 打印1 3 5 7 9
pause>nul
for /l %%i in (-1,-2,-10) do @echo %%i	#-1开始 步长-2 打印-1 -3 -5 -7 -9
pause>nul

2.2 for /d

/d 即 /dictionary,为了处理文件夹相关。完整格式:for /d %variable in (set) do command [command-parameters]
[1] 有通配符。当“元素集合”中包含有通配符 ? 或 * 时,它会匹配文件夹。它仅能匹配当前目录下的第一级文件夹,或是指定目录位置上的一级文件夹,而不能匹配更深路径下的子文件夹。和/r的局限都是:不能处理隐藏属性的文件夹

@echo off 
for /d %%i in (f:\test*) do echo %%i	#仅匹配到test*的文件夹 没有这样的文件夹的话则不会打印
pause>nul

[2] 无通配符。作用和 "for %%i in (元素集合) do 命令语句集合" 这样的语句无任何区别
[3] for /r /d一起使用。(在for有限的4个参数中 只有/r /d可以一起使用);可以认为/r /d是对/d的扩展
所以使用for /r /d的条件是:(1)要对文件夹操作(dir /ad /s /b可以显示不能操作) (2)不处理隐藏属性的文件夹(看下文for /f和dir的结合)

@echo off
for /r /d %%i in (*) do echo %%i	#显示当前目录下的所有文件夹以及子文件夹 等价dir /ad /s /b
pause>nul

2.3 for /r

较/d可以递归,对文件夹遍历。完整格式:for /r [[drive:]path] %%variable in (set) do command [command-parameters]
[1] 列举“目录”及该目录路径下所有子目录,并把列举出来的目录路径和元素集合中的每一个元素拼接成形如“目录路径\元素”格式的新字符串,然后,对每一条这样的新字符串执行“命令语句集合”中的每一条命令; 特别需要注意的是:当“元素集合”带以点号分隔的通配符 ? 或 * 的时候,把“元素集合”视为文件(不视为文件夹即目录),整条语句的作用是匹配“目录”所指文件夹及其所有子文件夹下匹配的文件;若不以点号分隔,则把“元素集合”视为文件夹(不视为文件);
[2] 当省略掉“目录”时,则默认针对当前目录进行;   
[3] 当元素集合中仅仅是一个点号的时候,将只列举目录路径;

@echo off 
for /r f:\test %%i in (a b c) do echo %%i	#列举 f:\test 及其所有的子目录,对所有的目录路径都分别拼接a、b、c之后再显示出来
pause
@echo off
for /f %%i in ('dir /ad /b /s') do echo %%i	#使用dir /a可以获取指定属性的目录 更加灵活
pause>nul

2.4 for /f

#测试文本
本文的目标是:不求最好,但求更好,做最实用的批处理分享。
本文地址:http://www.cnblogs.com/Braveliu/p/5081087.html。
这里是:顺序选择循环的博客,新手学习提升的福地。
2.4.1 解析文本:for /f的基本用法
1 @echo off 
2 for /f "delims=" %%i in (test.txt) do echo %%i	#没有分割 读取文本内容;不加"delims="则默认以空格键为分割
3 pause>nul
2.4.2 切分字符:delims=

"delims="等号后加的是字符集,比如以;和?为分割 则"delims=;?"
默认只提取第一节的字符串 关于其他节的提取参考 tokens=

@echo off 
for /f "delims=," %%i in (test.txt) do echo %%i	#以逗号为分隔符,只打印逗号之前的内容
pause>nul
2.4.5 定点提取:tokens=
测试文本:
测试1,测试2,测试3,测试4。

tokens= 后面一般跟的是数字,如 tokens=2,也可以跟多个;但是每个数字之间用逗号分隔,如 tokens=3,5,8,提取第3、第5和第8节字符串(注意,这里所说的“节”,是由 delims= 这一开关划分的)
如果 tokens= 后面指定了多个数字,如果形式变量为%%i。那么,第一个数字指代的内容用第一个形式变量 %%i 来接收,第二个数字指代的内容用第二个形式变量 %%j 来接收,第三个数字指代的内容用第三个形式变量 %%k 来接收……第N个数字指代的内容用第N个形式变量来接收。其中,形式变量遵循字母的排序,第N个形式变量具体是什么符号,由第一个形式变量来决定:如果第一个形式变量是%%i,那么,第二个形式变量就是%%j;如果第一个形式变量用的是%%x,那么,第二个形式变量就是%%y
tokens=1,2-4 表示提取1 2到4
token=n,* *表示依切分字符,将字符串从左往右切分成紧跟在*之前最大数值所表示的节数之后,字符串的其余部分保持不变,且整体被*所表示的一个变量接收。

@echo off 
for /f "delims=, tokens=3,4" %%i in (c.txt) do echo %%i %%j	#以,为分割 提取第三、第四节内容
exit /b 0
#打印内容:测试3 测试4。
@echo off 
for /f "delims=, tokens=1,*" %%i in (test3.txt) do echo %%i %%j
pause>nul
#打印内容:测试1 测试2,测试3,测试4。
@echo off
set num=0
for /f %%i in ('dir /a-d /b *.exe') do (
    set /a num+=1
    echo num 当前的值是 %num%
)
echo 当前目录下共有 %num% 个exe文件
dir /a-d /b *.txt|findstr "test">nul&&(
    echo 存在含有 test 字符串的文本本件
) || echo 不存在含有 test 字符串的文本文件
if exist test.ini (
    echo 存在 test.ini 文件
) else echo 不存在 test.ini 文件
pause
2.4.6 跳过无关内容 skip=n;忽略以指定字符开头的行:eol ;等参考网站教程

3.命令行参数

#批处理脚本支持命令行参数的概念,其中参数可以在被调用时传递给批处理文件。参数可以通过变量%1,%2,%3等从批处理文件中调用

4.创建空文件

1.cd. > a.txt		#cd.表示改变当前目录为当前目录,即等于没改变;而且此命令不会有输出。
2.copy nul a.txt	#nul表示空设备 需要Y确认 优化 echo Y|copy nul a.txt
3.type nul > a.txt	#不需要Y确认 优选
4.echo a 2 > a.txt	#“2”表示错误输出的句柄,此例中没有错误输出,所以创建了没有内容的空文件;其实>默认都是重定向了句柄1,即标准输出句柄。比如cd.>a.txt,其实就是cd. 1>a.txt。同样,句柄3到9也可以使用在本例中,它们是未经定义的句柄,也不会有输出,如echo a 3>a.txt。
5.fsutil file createnew d:\a.txt 0 #使用fsutil创建
6.echo. > a.txt	#创建一个空文件 >重导向

5.创建非空文件

1.echo a > a.txt
2.type a.txt > b.txt
3.copy a.txt b.txt
4.fsutil file createnew d:\a.txt 1

6.检测进程

检测进程

:start
choice /t 5 /d y /n >nul (5秒执行一次下面的指令)
tasklist|find /i "ngrok.exe" (检查是否存在ngrok.exe进程,如果检测到,下面比较的值为0,为0表示存在。)
if %errorlevel%==0 ( 
	echo "yes"
) else (
	echo "No" 
	start startup.bat (新窗口启动startup.bat脚本)
)
goto start  (循环)

7.调用批处理

1.call 原窗口
2.start	新窗口
posted @ 2022-05-13 15:46  孙犯困  阅读(768)  评论(0编辑  收藏  举报