Windows CMD语法和常用命令
Windows CMD ,cmd是command的缩写 。即命令行 。虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全、稳定,有的用户还在使用,所以一般Windows 的各种版本都与其兼容,用户可以在Windows 系统下运行DOS 命令提示符、终端等进一步提高了与DOS下操作命令的兼容性,用户可以在命令提示符直接输入中文调用文件。
基本命令
copy
copy 文件a + 文件b
将文件a和文件b合并,合并到a上。
dir
dir /s /b /a-d
显示文件夹以及子文件夹下的文件
/s
显示文件和子文件下的文件 /b
不显示文件和摘要 /a d
只显示目录 /a -d
不显示目录,只显示文件
dir /a-d
只显示文件
dir /ad
只显示目录
把目录写入文件时,cmd>a.txt
中间不加空格
把当前目录下的所有子文件目录写入a.txt
dir /s /b /ad>a.txt
把当前目录下的所有子文件写入b.txt
dir /s /b /ad>b.txt
[drive:][path][filename]
指定要列出的驱动器、目录和/或文件。
/A 显示具有指定属性的文件。
属性 D 目录 R 只读文件
H 隐藏文件 A 准备存档的文件
S 系统文件 I 无内容索引文件
L 解析点 - 表示“否”的前缀
/B 使用空格式(没有标题信息或摘要)。
/C 在文件大小中显示千位数分隔符。这是默认值。用 /-C 来
禁用分隔符显示。
/D 跟宽式相同,但文件是按栏分类列出的。
/L 用小写。
/N 新的长列表格式,其中文件名在最右边。
/O 用分类顺序列出文件。
排列顺序 N 按名称(字母顺序) S 按大小(从小到大)
E 按扩展名(字母顺序) D 按日期/时间(从先到后)
G 组目录优先 - 反转顺序的前缀
/P 在每个信息屏幕后暂停。
/Q 显示文件所有者。
/R 显示文件的备用数据流。
/S 显示指定目录和所有子目录中的文件。
/T 控制显示或用来分类的时间字符域。
时间段 C 创建时间
A 上次访问时间
W 上次写入的时间
/W 用宽列表格式。
/X 显示为非 8.3 文件名产生的短名称。格式是 /N 的格式,
短名称插在长名称前面。如果没有短名称,在其位置则
显示空白。
/4 用四位数字显示年
可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)
来替代预先设定的开关。例如,/-W。
cd
//进入d盘
D:
//进入F盘
F:
cd /? //获取使用帮助
cd \ //跳转到硬盘的根目录
cd C:\WINDOWS //跳转到当前硬盘的其他文件
d: //跳转到其他硬盘
cd /d e:\software //跳转到其他硬盘的其他文件夹,注意此处必须加/d参数。否则无法跳转。
cd.. //跳转到上一层目录
查看目录文件
//查看当前目录下的文件,类似于linux下的ls
dir
如果是需要查看隐藏文件的或者更多操作的话,可以使用 dir /?
来查看其它用法,cmd这点挺好的。
python /?
创建目录和删除目录
//创建目录
md 目录名(文件夹)
//删除目录
rd 目录名(文件夹)
查看本机ip
ipconfig
清除屏幕
cls
类似于linux下的clear
复制文件
copy 路径\文件名 路径\文件名 :把一个文件拷贝到另一个地方。
移动文件
move 路径\文件名 路径\文件名 :把一个文件移动(就是剪切+复制)到另一个地方。
删除文件
//这个是专门删除文件的,不能删除文件夹
del 文件名
ping
//用来测试网络是否畅通
ping ip(主机名)
taskkill
列出所有任务及进程号,杀进程
taskkill
taskkill /? 获取使用帮助
taskkill是用来终止进程的。具体的命令规则如下:
TASKKILL [/S system [/U username [/P [password]]]]
{ [/FI filter] [/PID processid | /IM imagename] } [/F] [/T]
描述:
这个命令行工具可用来结束至少一个进程。
可以根据进程 id 或映像名(Image)来结束进程。
参数列表:
/S system 指定要连接到的远程系统。
/U [domain]user 指定应该在哪个用户上下文
执行这个命令:
/P [password] 为提供的用户上下文指定密码。如果忽略,提示输入。
/F 指定要强行终止的进程。
/FI filter 指定筛选进或筛选出查询的的任务。
/PID process id 指定要终止的进程的PID。
/IM image name 指定要终止的进程的映像名称。通配符 '*'可用来指定所有映像名。
/T Tree kill: 终止指定的进程和任何由此启动的子进程。
/? 显示帮助/用法。
例如:
TASKKILL /S system /F /IM notepad.exe /T
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM QQ.exe
TASKKILL /F /IM notepad.exe /IM mspaint.exe
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
netstat 查看网络连接状态
显示协议统计信息和当前 TCP/IP 网络连接。该命令可以查看当前机器建立的所有网络链接状态,以及对应哪个进程。
netstat -help 获取命令行使用帮助信息
netstat -ano //查看网络连接、状态以及对应的进程id
语法:
netstat [选项]
参数:
-a或--all:显示所有连线中的Socket;
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的快取信息;
-e或--extend:显示网络其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单;
-h或--help:在线帮助;
-i或--interfaces:显示网络界面信息表单;
-l或--listening:显示监控中的服务器的Socket;
-M或--masquerade:显示伪装的网络连线;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-r或--route:显示Routing Table;
-s或--statistice:显示网络工作信息统计表;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定"-A unix"参数相同;
--ip或--inet:此参数的效果和指定"-A inet"参数相同。
find
find /?获取使用帮助
netstat -ano|find ".8" //使用管道符,进行模糊查询
tracert
tracert也被称为Windows路由跟踪实用程序,在命令提示符(cmd)中使用tracert命令可以用于确定IP数据包访问目标时所选择的路径。
tracert /? 获取使用帮助
查看cmd下的命令
1、使用help命令,查看所有的dos命令
使用这个命令之后,我们可以看到所有的dos命令,并且后面还有中文的解释。简直不要太赞,这样我们就可以根据自己的需求要找到想要使用的命令。
2、找到命令之后,使用 命令+ /?来查看该命令下的其他属性
命令 -help //第1种形式的使用帮助
命令 /? //第2种形式的使用帮助
注意:这些字符只能是英文的
start
打开新终端
move
移动
高级命令
set
变量读入
SET /P variable=[promptString]
将变量变量数值设成用户输入的一行输入
(set/p variablre=[空格]:空格也会被输出。)
@echo off
::下面 k 值是 16 个空格。
set k=
echo %k%水光潋滟晴方好,
echo %k%山色空蒙雨亦奇。
echo %k%欲把西湖比西子,
echo %k%淡妆浓抹总相宜。
pause
数学计算
SET /A expression
指定等号右边的字符串为待计算的数字表达式
@echo off
::下面 k 值是 16 个空格。
set k=
echo %k%水光潋滟晴方好,
echo %k%山色空蒙雨亦奇。
echo %k%欲把西湖比西子,
echo %k%淡妆浓抹总相宜。
pause
字符串计算
%PATH:str1=str2%
将字符串变量%PATH%中的 str1 替换为 str2
@echo off
set a=bbs.verybat.cn
echo 替换前的值: "%a%"
set var=%a:.=伤脑筋%
echo 替换后的值: "%var%"
pause
运行显示:
替换前的值: "bbs.verybat.cn"
替换后的值: "bbs 伤脑筋 verybat 伤脑筋 cn"
解释“set var=%a:.=伤脑筋% ”,a 是要进行字符替换的变量,"."为 要替换的值, "伤脑筋"为替换后的值, 执行后就会把变量%a%里面 的"."全部替换为"伤脑筋"。
if
实例代码:
@Echo Off
:1
Set /p str=《青玉案·元夕》作者是谁?
If not %str%==辛弃疾 echo 错误 & goto 1
If %str%==辛弃疾 echo 正确
:2
Set /p str=《红楼梦》前80回的作者是谁?
If not %str%==曹雪芹 echo 错误 & goto 2
If %str%==曹雪芹 echo 正确
Pause>Nul
::后面的依次类推
批处理for语句
(一)、for语句的基本用法
基本形式: Cmd下:
FOR %variable IN (set) DO command [command-parameters]
批处理中:
FOR %%variable IN (set) DO command [command-parameters]
区别:cmd下变量引用为%i,批处理下为%%i.
(二)、For /f 文本解析
它能够对字符串进行操作,也能够对命令的返回值进行操作,还可以 访问硬盘上的 ASCII 码文件,比如 txt 文档等。常用于文本信息编辑, 如查询、提取、替换等等 。
FOR /F "Delims=符号" %%I IN (Command1) DO Command2
for 默认以空格作分割符,当我们没有写"delims=",就默认以空格分隔
for /f "tokens=1,2 delims=:" %%a in (易经.txt) do echo %%a %%b
1、“tokens=1,2”中 1 和 2 数字之间,用的逗号必须是英文格式逗号。
2、这里需要显示两列的内容,那么,echo 后面就需要用多个变量符 号%%a 和%%b。同样,如果需要显示三列内容就必须这么写 echo%%a%%b%%c。
(三)、遍历文件夹
For /r
1.基本形式:for /r 目录 %%i in (元素集合) do 命令语句集合 作用:列举“目录”及该目录路径下所有子目录,并把列举出来的目录路径和元素集合中的每一个元素拼接成形如“目录路径\元素”格式的新字符串,然后,对每一条这样的新字符串执行“命令语句集合”中的每一条命令。 2.当“元素集合”带以点号分隔的通配符?或的时候,把“元素集合”视为文件(不视为文件夹),整条语句的作用是匹配“目录”所指文件夹及其所有子文件夹下匹配的文件;若不以点号分隔,则把“元素集合”视为文件夹(不视为文件); 3.当省略掉“目录”时,则针对当前目录; 4.当元素集合中仅仅是一个点号的时候,将只列举目录路径;
★与dir /ad /s的区别:
For /r:不能显示隐藏文件,速度快 Dir /ad:可以指定特定格式,速度慢
For /d
作用:只能匹配第一层
目录
带通配符时:匹配文件夹
For /r /d
显示当前目录下所有的文件夹(包括子文件夹) 等价于dir /ad /s/b
(四)、For /l :计数循环
基本形式:
for /l %%i in (x,y,z) do (.......)
x——起始值 y——步长 y——终止值 (不能取0)
创建一系列文件
@echo off
md text
rem cd text
for /l %%i in (1,2,20) do cd.> text\%%i.txt
(五)、FOR变量
变量 | 作用 |
---|---|
~I | - 删除任何引号("),扩充 %I |
%~fI | - 将 %I 扩充到一个完全合格的路径名 |
%~dI | - 仅将 %I 扩充到一个驱动器号 |
%~pI | - 仅将 %I 扩充到一个路径 |
%~nI | - 仅将 %I 扩充到一个文件名 |
%~xI | - 仅将 %I 扩充到一个文件扩展名 |
%~sI | - 扩充的路径只含有短名 |
%~aI | - 将 %I 扩充到文件的文件属性 |
%~tI | - 将 %I 扩充到文件的日期/时间 |
%~zI | - 将 %I 扩充到文件的大小 |
%~dpI | - 仅将 %I 扩充到一个驱动器号和路径 |
%~nxI | - 仅将 %I 扩充到一个文件名和扩展名 |
%~fsI | - 仅将 %I 扩充到一个带有短名的完整路径名 |
其中 I 为变量
ECHO off
SETlOCAL enabledelayedexpansion
SET FIND_DIR=E:\dirA\dirC\dirD
for /R %FIND_DIR% %%f in (*.txt) do (
SET FULL_PATH=%%f
ECHO 完整的路径: !FULL_PATH!
SET FILE_DIR=%%~dpf
ECHO 所在的目录: !FILE_DIR!
SET FILE_NAME=%%~nf
ECHO 无后缀文件: !FILE_NAME!
SET FILE_EXT=%%~xf
ECHO 文件名后缀: !FILE_EXT!
SET "FILE_NAME_NOT_PATH=%%~nxf"
ECHO 无路径文件: !FILE_NAME_NOT_PATH!
SET "FULL_PATH_NOT_EXT=%%~dpnf"
ECHO 无后缀全名: !FULL_PATH_NOT_EXT!
)
pause
---------------------
作者:AlbertS
来源:CSDN
原文:https://blog.csdn.net/albertsh/article/details/79651437
版权声明:本文为博主原创文章,转载请附上博文链接!
运行结果
完整的路径: E:\dirA\dirC\dirD\eee.txt
所在的目录: E:\dirA\dirC\dirD\
无后缀文件: eee
文件名后缀: .txt
无路径文件: eee.txt
无后缀全名: E:\dirA\dirC\dirD\eee
基本操作
删除文件夹:rmdir /s/q aaa
/s 表示删除子目录
辅助符号或命令
‘|’
“|”cmd命令中|代表前一个的输出代表后一个的输入
查找特定ip的网络连接及进程号:netstat -ano|find "192.168.1.10"
重定向输出符号> >>
将原本输出到命令窗口的内容,转存到文件中,如jstack 12912 >d:/s.txt
打印线程到指定文件
cmd > 重定向输出并覆盖源文件。
例如
echo hello >c:\1.txt // 1.txt的文件内容先被清空,然后写入hello。
cmd >>重定向输出追加到文件末尾
例如:
echo hello >>c:\1.txt // 在1.txt文件末尾加上hello
重定向输入符号< <<
cmd < file
使cmd命令从file读入
cmd << text
从命令行读取输入,直到一个与text相同的行结束。
除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。
如果使用 <<- ,则会忽略接下来输入行首的tab,结束行也可以是一堆tab再加上一个与text相同的内容,可以参考后面的例子。
cmd <<< word
把word(而不是文件word)和后面的换行作为输入提供给cmd。
cmd <> file
以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的。
cmd >| file
功能同>,但即便在设置了noclobber时也会覆盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用>!实现这一功能。
终止一直在运行的命令ctrl+c
有时某个命令一直打印输出结果(如ping 192.168.1.10 -t),我们想终止这个命令的执行,直接按ctrl+c即可。
清空cmd窗口内容命令cls
有时cmd内容太多,滚动费尽,需要清空屏幕内容,直接输入cls即可
cmd命令中,按键盘的向上箭头可以直接复制前一个命令