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 commandfor /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:格式转化