cmd基础命令
cmd基础命令
常用规则
-
@echo off
:关闭所有回显包括本身,不然每一行都会显示在cmd包括注释,去掉可用作调查;@
表示后面的命令不显示。
- -
echo.
:换行。 -
exit /b 1
:exit
:退出当前cmd窗口实例。exit 0
:退出当前cmd窗口实例,并将过程退出代码设置为0(0表示成功,非0表示失败)。exit /B 1
:退出当前bat脚本,并将ERRORLEVEL系统变量设置为1。
-
pause
:不加执行完会直接推出cmd窗口,加了最后会提醒出入回车关闭窗口。 -
参数:
%~dp0
:%~d0
取驱动盘名,%~p0
取路径名,不含驱动盘名;扩充到当前目录。%CD%
:扩展到当前目录。%~1
:代表传给脚本的第一个参数,当参数以引号开头时,%~1
会自动将引号删除。
-
%errorlevel%
:DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),0表示成功,>0表示失败。
SET变量相关
-
set var=string
:给变量赋值字符串,“string”的话显示值也会带引号。 -
set var
:显示值。 -
set var=
:删除该变量。 -
set /p var=
:var值为输入字符串。 -
%VAR:str1=str2%
:字符替换,把把变量名中的str1字符串替换成str2,没有就不换;"%VAR:R=%"
,去掉R。 -
%VAR:~0,24%
:字符串截取,把变量从第1个字符开始(包括)截取24个字符,0第一个char,-1最后一个,-2倒数第二。 -
使用环境变量:
-set BUILD_SUPPORT=C:\Users\Z0178023\myPrj\FRGen21_Tools %FRGen21_BuildSupport%
我们没有定义,但是环境变量有与上面会先消息一致。
-
setlocal
:局部变量。setlocal到endlocal之间给变量赋值,仅在这区间有效;或者没有endlocal;一般set只会在下一条语句生效,加上setlocal。
if相关语句
- 基本规则:
if
和执行的命令,if
和else
,要在同一行,不然是错的。例如:if exist filename( echo yes! )ELSE( echo NO1 echo NO2 )
If not exist
或exist
,一般是不存在那个目录或文件。equ/==
:等于,neq
:不等于,lss
:小于,leq
:小于等于,gtr
:大于,geq
:大于等于。- 注意:空格,空格不加会报语法错误。
if "%ALGORITHMRAW_NAME_NEW%"=="" (
for语句必看
for %%i in (*.*) do echo %%i
:无参数。in
在某些文件中,for %%i
对于其中的某个文件,do
做下面处理。for %%i in (A,B,C) do echo %%i
:无参数,处理字符串序列。/l
是重要的参数之一,用来指定数值变量的步进循环模式。for /l %%i in (5,3,16) do echo %%i
:从5开始到16为止每次递增3作为变量%%i
的值,5 8 11 14,do
做下面处理。
/f
对指定范围内的文字进行循环,可以是一个文件里的文字,可以是一个字符串,也可以是一条命令的输出结果:- 将命令返回结果用作处理,用单引号:
for %I in ('command') do command
。 - 兼容
usebackq
:- 路劲兼容,用双引号:
for %I in ("path") do command
。 - 命令兼容,在命令批处理中(
i
),如果command
内包含单引号,所以无法识别,用后引号:for %I in (`command`) do command
for /f "usebackq delims==" %%i in (
“@dir /b %ALGORITHM%\ZZZ_Build_Products*APU*_%RADAR_TYPE%.raw”) do @set ALGORITHMRAW_NAME=%%i
- 这里不加
""
也可以,直接后引号。
- 路劲兼容,用双引号:
"delims="
:分隔符,一句话总结:忽略分隔符,切分字符串。默认分隔符空格,delims==
分隔符为=,所以delims=usebackq
设置分隔符空格。
- 将命令返回结果用作处理,用单引号:
重定向和管道
>
:覆盖,将命令的输出重定向到文件中,但是会清除原来文件中内容。>>
:追加,将命令的输出重定向文件中,不会清除原来文件中的内容,会将内容追加到文件尾部。<
:将某个文件中的内容重定向为输入。例如:set /p myvar=<sss.txt
,从sss.txt中读入一行放入myvar中。NUL
:空设备,类似于linux的/dev/null
。
目录命令
cd
:进入到目录。md
:创建文件夹。rd
:删除文件夹。dir
:显示目录中的文件和子目录列表,子目录里的文件不显示,包括时间戳,多少个文件,大小。/b
:仅显示该目录下的文件和子目录名,不显示上面的大小什么的。
xcopy
:复制文件和目录树。- 无参数:
xcopy .\aa .\dd
,只拷贝aa目录下的文件,不拷贝文件夹。发现dd只有1.txt文件,不同于linux下的cp。 /s
:xcopy /s .\aa .\dd
,递归,把该目录下(aa)的文件及子目录中文件一起拷贝,除了空文件夹。拷贝aa的1.txt和bb\2.txt(包括bb文件夹)到dd。/e
:同/s
,但是包括空文件夹。/q
:同下。/Y
:进行拷贝时不提示是否确认Y or N。
- 无参数:
- 文件命令:
-
del
:删除一个或多个文件。- 参数:
/f
:强制删除只读文件,不加不能删除系统文件。/s
:递归删除,删除指定目录及其子目录下的文件;del /s .\aa\aaa.txt
,aa下的子目录中的aaa.txt也会删除。/q
:不询问,比如说删除文件夹会询问YES/NO,加了这个参数就不会问,直接删除。
del .\aa\aaa.txt
:一定要加.
,或者直接写绝对路径;不然就识别不到file。
- 参数:
-
type
:显示文本文件的内容。type test.txt
:把txt文件的内容显示到cmd,一定要加后缀。type nul>test
:在当前目录创建一个叫test的空文件/type a.txt b.txt>c.txt
:合并文件
-
copy
:将一份或多份文件复制到另一个位置,可以实现改名。- copy C:\test*.* D:\back (复制C盘test文件夹的所有文件(不包括文件夹及子文件夹里的东西)到D盘的back文件夹)
-
attrib
:文件属性设置- attrib -r . /S /D 【-清除 +设置 ; 清除只读属性-哪些文件-处理当前文件夹和所有子文件夹中的匹配文件-同时处理文件夹】
-
ren
:重命名文件,ren 路径/文件名(相对或绝对) 文件名,不能指定目标文件的路径
-
objcopy.exe
- 相当于linux的objcopy命令,用于格式转化和裁剪文件;可以利用objcopy选项来填充生成的bin文件。
- 参数
- –pad-to=address: 填充输出文件到虚拟地址address
- –gap-fill = 0xff是objcopy的参数,表示在拷贝过程中,用0xff来填充段与段之间的空隙
srec_cat
:格式转化