编程

Windows cmd 特殊符号及变量

379 2023-10-10 17:36:00

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%                      本地返回验证当前登录会话的域控制器的名称