Windows cmd 特殊符号及变量
cmd 常用变量
bat批处理常用命令
%1~%9表示拖入文件(%0以外的输入文件),%0表示批处理文件本身
%0~%1字母意思基本相同,不区分大小写
::打印当前窗口地址
echo “%cd%”
%0 获取当前文件路径
%~d0 获取当前盘符
%~dp0 获取当前盘符和路径
%~f0 获取当前批处理全路径
%~sdp0 获取当前盘符和路径的短文件名格式
%~nx0 获取当前文件文件名及后缀名
%~n0 获取当前文件文件名
%~x0 获取当前文件后缀名
%1 获取拖入文件完整路径。如:"D:\ABC\adc.txt"
%~1 获取拖入文件完整路径,并去掉首尾引号。如:D:\ABC\adc.txt
%~n1 获取拖入文件文件名。如:adc
%~nx1 获取拖入文件文件名及后缀。如:adc.txt
%~x1 获取拖入文件后缀名。如:.txt
%~dp1 获取拖入文件所在目录完整路径。如:D:\abc\
%~d1 获取拖入文件所在盘符。如:D:
%~z1 获取拖入文件大小。如:1024
%~t1 获取拖入文件修改时间。如:2023/08/05 周一 19:01
%cd% 获取拖入文件所在目录完整路径。如:D:\ABC
没有传递值获取运行程序完整路径。如:C:\ABC
如果传递值这为传递值路径。如:D:\ABC
for 变量
在bat批处理里使用需要”%%“,cmd窗口使用只需要”%“
::获取当前目录下所有a开头的文件
for /f %%a in ('dir /s /b a*') do (
%%a 文件完整信息
%%~da 保留文件所在驱动器信息
%%~pa 保留文件所在路径信息
%%~aa 保留文件的文件属性
%%~na 保留文件名信息
%%~xa 保留文件后缀信息
%%~za 保留文件大小信息
%%~ta 保留文件修改时间信息
%%~dpa 保留文件所在驱动器和所在路径信息
%%~nxa 保留文件名及后缀信息
%%~pnxa 保留文件所在路径及文件名和后缀信息
%%~dpna 保留文件驱动器、路径、文件名信息
%%~dpnxa 保留文件驱动器、路径、文件名、后缀信息
set %var% 相关变量
::变量值偏移和替换配合for可以实现替换文件内容
%var:str1=str2%
将var中的str1替换为str2(str2如果为空则可以达到删除的效果,str1前可以加*,变量%ABC:*B=%是C)
%var:~0,-2% 提取var 变量的所有字符,除了最后两个
%var:~-2% 提取var 变量的最后两个
特殊字符
字符@
一般配合@echo off,关闭命令所有回显,包括本条命令,即不显示输入,只显示输出结果
字符>和字符>> 重定向输入
>
把文字结果写入进文本
123>123.txt 抹去前文件内容,没有这个文件名就新建再写入
>>
把文字追加进文本
123>>123.txt 把现有的文字追加进去,保留原文件内容
字符%% 引用变量
%%
%~1 基本用%0-%9这些变量使用
%cd% 用于系统定义变量或自定义变量,常用的格式
%%i 只用于for循环里
字符!! 配合延时变量使用
setlocal enabledelayedexpansion 延时变量
!!
!a! 当启用变量延迟时,使用!!将变量名扩起来表示对变量值的引用
字符^ 转义符
^
^% %将失去它的应用作用,变成普通符号,一个^只对后面一个符号生效
^> 可剥夺特殊符号的特殊意义,从而使其变成普通符号
字符:: 注释信息
::
::123 注释后的信息不会被执行时显示和执行,用于信息标注,::后面所有信息都将无效
字符: 标签定位
:
:1 可以接受goto命令所指向的标签,用于goto跳转
字符& 链接符
&
dir & cls 链接前后命令顺序,系统按顺序依次执行,不够前面命令是否执行成功都继续执行后面命令
字符&& 链接判断
&&
123 && dir 前一个命令执行失败后面命令不再执行,前面命令执行成功,后面就继续执行
字符| 管道符
|
dir | find 将前面命令的输出结果转给后面进行输入
字符|| 执行判断
||
123 || dir 前面命令执行失败才执行后面命令,前面命令执行成功后面不执行
字符< 反向重定符
<
<123.txt 将后面的信息读取出来,可以用来读文件信息给前面命令
字符"" 界定符
""
"123 abc" 表示符号中的信息时一体的,空格时非常需要这个,不如系统会认为时两组信息
字符~
在for中表示使用增强的变量扩展;
在set中表示使用扩展环境变量指定位置的字符串;
在set/a中表示按位取反。
字符* 通配符
*
*.exe 可以为任意字符
字符? 单字通配符
?
e?e 可以匹配任意一个字符
字符() 界定边界
()
(dir /a/b) 命令包含或者是具有优先权的界定符
字符- 范围表示符
-
1-123 表示范围区间
字符= 赋值符号
=
a=b 用于变量赋值,b赋值给a
字符''
''
'abc' 在for/f中表示将它们包含的内容当作命令行执行并分析其输出;
'dbc' 在for/f "usebackq"中表示将它们包含的字符串当作字符串分析。
字符.
. 表示当前目录
.. 表示上一级目录
系统内置变量
值由系统将其根据事先定义的条件自动赋值,我们可以直接调用使用
%cd% 列出当前目录。
%date% 列出当前日期。
%time% 列出当前时间。
%temp% 当前用户的缓存目录。
%windir% 列出操作系统目录的位置。
%Path% 列出了可执行文件的搜索路径。
%pathext% 列出操作系统认为可被执行的文件扩展名。
%ProgramFiles% 列出了Program Files文件夹的路径。
%errorlevel% 列出了最近使用的命令的错误代码。0表示成功
%random% 列出界于0 和 32767之间的随机数字。
%homedrive% 操作系统所在的分区号。如:C:
%systemroot% C:\WINDOWS 当前启动的系统的所在目录
%userprofile% C:\Users\abc 当前用户数据变量
%homepath% \Users\abc 当前用户环境变量
%system% C:\WINDOWS\SYSTEM32
%allusersprofile% 列出所有用户Profile文件位置。
%appdata% 列出应用程序数据的默认存放位置。
%clientname% 列出联接到终端服务会话时客户端的NETBIOS名。
%cmdcmdline% 列出启动当前cmd.exe所使用的命令行。
%cmdextversion% 命令出当前命令处理程序扩展版本号。
%CommonProgramFiles% 列出了常用文件的文件夹路径。C:\Program Files\Common Files
%computername% 列出了计算机名。
%comspec% 列出了可执行命令外壳(命令处理程序)的路径。
%homeshare% 列出用户共享主目录的网络路径。
%logonsever% 列出有效的当前登录会话的域名控制器名。
%numeer_of_processors% 列出了计算机安装的处理器数。
%os% 列出操作系统的名字。
%processor_architecture% 列出了处理器的芯片架构。
%processor_identfier% 列出了处理器的描述。
%processor_level% 列出了计算机的处理器的型号。
%processor_revision% 列出了处理器的修订号。
%prompt% 列出了当前命令解释器的命令提示设置。
%sessionname% 列出连接到终端服务会话时的连接和会话名。
%systemdrive% 列出了Windows启动目录所在驱动器。
%userdomain% 列出了包含用户帐号的域的名字。
%username% 列出当前登录的用户的名字。
%logonserver% 本地返回验证当前登录会话的域控制器的名称