Last Updated: 2023-06-04 14:03:18 Sunday
-- TOC --
Windows命令不区分大小写....但参数区分!
内置的命令帮助,使用
/?
显示。UEFI Shell的风格,很像Windows Cmd!
echo
和@
> echo a b c
a b c
输出空行:echo.
或echo:
打开或关闭命名本身的回显功能,是命令本身的那行字符串是否显示出来。在bat脚本文件中,命令前使用@
,表示这一行命令本身不回显:
@echo off
echo abcde
@echo on
echo 12345
echo 12345
这行命令本身会回显。
rem
和::
rem注释支持命令回显,而::
注释不支持。
@echo on
rem abcde
:: 12345
rem abcde
这行命令能够在脚本执行过程中看见。
call
调用另一个bat脚本如果不使用call调用另一个bat脚本,那么,执行完那个脚本后,将无法返回当前bat脚本继续后面命令的执行。
start
启动外部命令使用start的效果,外部命令在新窗口中执行,当前bat继续往下走。如果不使用start,就必须要等待那个命令执行完毕,才能继续下一条命令。
pause
按任意键继续...暂停脚本的执行,窗口显示按任意键继续...
set abc=123
%<number>
或%<name>%
取变量或参数的值如果是从命令行输入给bat脚本的参数,编号从1开始,使用%
前缀即可。其它字母类型的变量,前后都要有%
。%0
表示bat文件本身。%*
从第1个参数开始的所有参数。
@echo off
set aa=12345
echo %aa%
echo %1
echo %Path%
echo 2
goto
和:<label>
无需多言...
可以用goto实现批量注释:
goto next
# hello world
# this is comment
# this is also comment
:next
#
不是必须的,只是为了legible...
cls
清空命令行窗口
type
显示文本文件
|
管道符号
>
重定向
> dir > text.txt
exit
退出直接exit,cmd窗口都会被关闭,此时可以使用exit /b
。
exit [/b] [exitcode]
&&
和||
含义同bash。
call xxxx.bat && goto succeed || goto failed
:succeed
echo successful
exit /b
:failed
echo failed
pause
find
和findstr
命令类似grep命令。
如果要匹配的字符串是“abc 123”这样形式的,中间有个空格。find命令将会将其视为一个整体来搜索匹配。而findstr命令会将其拆开成abe或123来匹配。
>dir | find "cpp"
2023/05/22 14:50 5,121 image_diff.cpp
2023/05/22 14:50 6,552 testa.cpp
>dir | findstr "cpp h"
2023/05/22 14:50 5,121 image_diff.cpp
2023/05/22 14:50 1,053 image_diff.h
2023/05/22 14:50 6,552 testa.cpp
找到后,errorlevel为0,没找到errorlevel为1。
^
连接下一行对应bash中的\
。
del
删除文件
%errorlevel%特殊变量
程序执行结束的返回码,exitcode,一般0表示成功。
call xxxx.bat
if %errorlevel% == 0(
echo successful
) else (
echo failed
)
cd /d %~dp0
%~dp0
表示变量扩展:
d,driver,扩展到盘符
判断某个驱动是否已经安装过了...
cd /d %~dp0
@echo off
devcon find *cldvirtaudiodevice | find "No matching"
if %errorlevel% == 0 (
devcon.exe install cvadriver.inf "*cldvirtaudiodevice"
)^
else (
echo #### Virtual audio device already exists. ####
)
@echo on
本文链接:https://cs.pynote.net/sf/win/202305291/
-- EOF --
-- MORE --