Cmd基础
Cmd基础
Cmd指令集:Github gist
1. 简介
cmd命令 分为 内部命令 和 外部命令
内部命令:物理内存中可以直接调用的命令
比如 ls , copy , echo …
外部命令:内部命令的功能扩展,通过调用应用程序来执行结果,可扩展自定义 : 把ping重命名为ping2,可以使用ping2执行原来的ping命令
扩展:如果要使用 wget 命令,可以下载并安装wget
使用wget下载百度的首页:wget www.baidu.com
2. 简单命令
cd
切换目录,路径带空格需要双引号
1 | cd C: |
dir
列出文件夹
1 | dir /a all |
md
创建文件夹
1 | md C:\hello |
rd
删除文件夹
1 | rd C:\hello |
attrib
设置文件属性
查看文件属性
1 | attrib C:\hello.txt |
+r
添加只读
1 | attrib +r demo.txt |
-h
删除隐藏
1 | attrib -h demo.txt |
type
more
打印查看文档文件(more)
1 | type C:\hello.txt |
copy
只能复制文件
1 | copy C:\hello.txt D:\ |
xcopy
/s
不能复制空目录
/e
能赋值空目录
1 | xcopy /e C:\hello.txt D:\ |
rename
1 | rename hello.txt HELLO.txt rem文件 |
move
1 | move C:\demo.txt D:\ |
ren
重命名
1 | ren C:\demo.txt D:\DEMO.txt rem重命名 |
replace
替换
/a
add将新文件添加到目标目录(复制)
/s
same递归替换目标目录与所有子目录下的同名文件
/u
update更新且替换同名文件
1 | replace /a C:\demo.txt D:\ |
mode
宽度,高度
1 | mode 80,30 |
color
背景色字体颜色
1 | color 07 |
3. 变量
set
查看系统环境变量
局部变量
1 | set name=xxx |
打印值
1 | set name |
删除:赋予空值
1 | set name= |
运算
1 | set /a 1+1 |
接受输入/p
1 | set /p var=请输入一个字符 |
忽略大小写/i
ignore
1 | @echo off |
setx
在用户或系统环境创建或修改环境变量。能基于参数、注册表项或文件输入设置变量。
设置全局变量
1 | setx PATH "%path%;C:\python\bin" |
errorlevel
错误变量:如果上一条命令的返回值,0表示执行成功
1 | echo %errorlevel% |
4. 特殊字符
|
命令管道,将第一条的命令的结果作为第二条的命令的参数来使用
find
查找文件或者文件夹
findstr
筛选对应字符串
1 | dir f:\ | find "hello" |
&
组合命令,当第一条命令执行失败了,后边的命令继续执行
1 | dir a:\ & dir c:\ rem 会显示A:\和C:\目录 |
&&
组合命令,第一个命令失败后,后边的命令不会执行
1 | dir a:\ && dir c:\ rem 不会显示目录 |
||
组合命令,第一个命令失败后,才会执行第二条命令
1 | dir a:\ & dir c:\ rem 会显示C:\目录 |
()
括号
;
分号
*
通配符,全部字符
?
通配符,单个字符
1 | dir c:\??? rem打印长度为3的文件名和文件夹 |
@echo off
关闭回显
1 | set /a var = 4*5 rem var变量 |
rem
注释
::
注释
goto
跳转:flag
,类似汇编
1 | @echo off |
start
打开盘符、文件、文件夹、网址、程序等
/min
最大化
/max
最小化
文件夹路径带空格要加双引号
1 | start F:\ |
call
调用,类似汇编
1 | @echo off |
sort
排序
默认按照以一个字母升序排序
1 | sort demo.txt |
/+n
按照第n个字母排序
1 | sort /+n demo.txt |
/r
倒序
1 | sort /r demo.txt > demo1.txt |
/o
导出output
1 | sort demo.txt /o demo1.txt |
5. 条件
if exist
if not exist
判断文件或者文件夹是否存在
1 | @echo off |
if "str1"=="str2"
else
判断两个字符串是否相等
1 | @echo off |
if sum1 equ sum2
判断某两个数值是否相等
if defined var
判断某个变量是否已经被赋值
1 | @echo off |
判断两个数值值之间的大小关系的关系符:
判断 | 关系符 | 解释记忆 |
---|---|---|
== | equ | equal |
> | gtr | greeter than |
>= | geq | gteater then or equal |
< | lss | less than |
<= | leq | less than or equal |
!= | neq | not equal |
1 | @echo off |
判断文件夹是否存在,不在则创建
1 | @echo off |
判断文件是否存在,不存在则创建
1 | @echo off |
type nul >route
回显重定向到文件输出
6. 循环
for %var in (set) do conmand
处于cmd dos界面:
1 | for %i in (1 2 3 4 5) do echo %i |
处于.bat文件中: 变量var需要双百分号%%var
1 | @echo off |
4-遍历出F盘中以a开头的文件,不是文件夹
for /l %var in (start , step , end) do conmend
1 | @echo off |
3-step参数为跳跃间隙值,同python
4-批量创建文件夹text1 text3 text3
5-从浏览器打开3次百度首页
for /d %var in (set) do command
(directory)
1 | @echo off |
2-筛选出当前目录的所有文件夹:
3-筛选出f盘下,命名字符长度小于等于3的文件夹匹配出的只能是目录,文件夹,不能是文件
for /r [drive:]path %var in (set) do command
1 | @echo off |
匹配出F:盘下所有以.txt结尾的文件for /f "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
1 | @echo off |
读取文件内容,如果不加/f
,只会把文件路径打印出来
2-默认以空格为每行的分隔符,读取F盘下demo.txt的内容,遇到空格认为此行结束
3-以"delims=?"
,?作为每行的分隔符
4-取"delims="
时,以此行不再有内容认为此行结束
5-"delims="
按行提取文档,tokens=1,2,...
并只提取出第1,2,…列的字符,注意echo接收的参数数量需要和提出的tokens数量一致
6-在第5行命令的基础上增加了skip=1
,指跳过第一行的读取
1 | @echo off |
从F:demo.txt中按行读取内容,将每行内容按字符命名新文件夹
%0
1 | @echo off |
死循环,无法ctrl+c取消,慎用
7. 重定向
操作符:>
,>>
,<
>
写
1 | @echo off |
>>
追加
1 | @echo off |
<
读
1 | @echo off |
句柄的数字代码描述
0:键盘输入
1:输出到命令提示符窗口
2:错误输出
常用于错误日志捕捉
1 | @echo off |
故意将dir
写成di
,结果任会生成两个文件,错误日志保存在error.txt
8. 系统
1.ping
选项:
-t Ping 指定的主机,直到停止。若要查看统计信息并继续操作,请键入 Ctrl+Break;若要停止,请键入 Ctrl+C。
-a 将地址解析为主机名。
-n count 要发送的回显请求数。
-l size 发送缓冲区大小。
-f 在数据包中设置“不分段”标记(仅适用于 IPv4)。
-i TTL 生存时间。
-v TOS 服务类型(仅适用于 IPv4。该设置已被弃用,对 IP 标头中的服务类型字段没有任何影响)。
-r count 记录计数跃点的路由(仅适用于 IPv4)。
-s count 计数跃点的时间戳(仅适用于 IPv4)。
-j host-list 与主机列表一起使用的松散源路由(仅适用于 IPv4)。
-k host-list 与主机列表一起使用的严格源路由(仅适用于 IPv4)。
-w timeout 等待每次回复的超时时间(毫秒)。
-R 同样使用路由标头测试反向路由(仅适用于 IPv6)。根据 RFC 5095,已弃用此路由标头。如果使用此标头,某些系统可能丢弃回显请求。
-S srcaddr 要使用的源地址。
-c compartment 路由隔离舱标识符。
-p Ping Hyper-V 网络虚拟化提供程序地址。
-4 强制使用 IPv4。
-6 强制使用 IPv6。常见系统的TTL值:
WINDOWS NT/2000 TTL:128
WINDOWS 95/98 TTL:32
WIN7 TTL:64
UNIX TTL:255
LINUX TTL:64/255给baidu丢垃圾
1
ping -l 65500 www.baidu.com -t
2.telnet
查看某个端口是否可访问。首先要开启telnet功能。net start telnet
- 选项:
telnet [-a][-e escape char][-f log file][-l user][-t term] [host[port]]
-a 企图自动登录。除了用当前已登陆的用户名以外,与 -l 选项相同。
-e 跳过字符来进入 telnet 客户端提示。
-f 客户端登录的文件名
-l 指定远程系统上登录用的用户名。要求远程系统支持 TELNET ENVIRON 选项。
-t 指定终端类型。支持的终端类型仅是: vt100, vt52, ansi 和 vtnt。
host 指定要连接的远程计算机的主机名或 IP 地址。
port 指定端口号或服务名。访问百度服务器的80端口1
telnet www.baidu.com 80
3.netstat
显示协议统计信息和当前 TCP/IP 网络连接。
选项:
NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]
-a 显示所有连接和侦听端口。
-b 显示在创建每个连接或侦听端口时涉及的可执行程序。在某些情况下,已知可执行程序承载多个独立的组件,这些情况下,显示创建连接或侦听端口时涉及的组件序列。在此情况下,可执行程序的名称位于底部 [] 中,它调用的组件位于顶部,直至达到 TCP/IP。注意,此选项可能很耗时,并且在你没有足够权限时可能失败。
-e 显示以太网统计信息。此选项可以与 -s 选项结合使用。
-f 显示外部地址的完全限定域名(FQDN)。
-n 以数字形式显示地址和端口号。
-o 显示拥有的与每个连接关联的进程 ID。
-p proto 显示 proto 指定的协议的连接;proto可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s选项一起用来显示每个协议的统计信息,proto 可以是下列任何一个:IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-q 显示所有连接、侦听端口和绑定的非侦听 TCP 端口。绑定的非侦听端口不一定与活动连接相关联。
-r 显示路由表。
-s 显示每个协议的统计信息。默认情况下,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;-p 选项可用于指定默认的子网。
-t 显示当前连接卸载状态。
-x 显示 NetworkDirect 连接、侦听器和共享终结点。
-y 显示所有连接的 TCP 连接模板。无法与其他选项结合使用。
interval 重新显示选定的统计信息,各个显示间暂停的间隔秒数。按 CTRL+C 停止重新显示统计信息。如果省略,则 netstat 将打印当前的配置信息一次。1
netstat -ano
状态:
LISTENING:监听
ESTABLISHED:已建立连接
TIME_WAIT:超时利用
netstat
查询端口被哪个进程占用:netstat
查询 tcp/ip 连接tasklist
列举任务进程taskill
杀任务进程taskmgr
打开任务管理器
1.查找所需端口,得到应用PID
1 | netstat -ano | findstr [port] |
2.得到详细进程信息
1 | tasklist | findstr [PID] |
看看任务管理器,查找PID
1 | taskmgr |
3.关闭应用
1 | taskill /im [name.exe] |
4.netsh
定义:netsh(Network Shell)是一个windows系统本身提供的网络配置命令行工具,可以用来修改windows的ip、网关、dns信息
用法:
netsh
? - 显示命令列表
add - 在项目列表上添加一个配置项目
advfirewall - 更改到 netsh advfirewall上下文
bridge - 更改到netsh bridge上下文
delete - 在项目列表上删除一个配置项目
dhcpclient - 更改到netsh dhcpclien 上下文
dnsclient - 更改到 netsh dnsclient上下文
dump - 显示一个配置脚本
exec - 运行一个脚本文件
firewall - 更改到netsh firewall 上下文
help - 显示命令列表
http - 更改到 netsh http上下文
interface - 更改到 netsh interface上下文
ipsec - 更改到netsh ipsec上下文
lan - 更改到netsh lan上下文
mbn - 更改到 netsh mbn上下文
namespace - 更改到 netsh namespace上下文
netio - 更改到 netsh netio上下文
p2p - 更改到 netsh p2p上下文
ras - 更改到 netsh ras上下文
rpc - 更改到 netsh rpc上下文
set - 更新配置设置
show - 显示信息
trace - 更改到 netsh trace上下文
wcn - 更改到 netsh wcn上下文
wfp - 更改到 netsh wfp上下文
winhttp - 更改到 netsh winhttp上下文
winsock - 更改到 netsh winsock上下文
wlan - 更改到 netsh wlan上下文int ip
dump
备份网络配置
netsh dump > [route]
1
netsh dump > F:netsh_dump.txt
设置静态ip
set address name="[locallink]" source=static addr=192.168.0.7 mask=255.255.255.0
1
set address name="VLAN" sourse=static addr=192.168.43.160 mask=255.255.255.0
设置自动获取ip
set address name="[locallink]" source=dhcp
设置其他(网关,dns等)
set address name="[locallink]" gateway=[172.19.96.1] gwmetric=1
重置winsock目录。
netsh winsock reset
如果计算机winsock协议配置有问题的话将会导致网络连接等问题,通过重置winsock目录借以恢复网络,这个命令可以重新初始化网络环境,已解决由于软件冲突,病毒原因造成的参数错误问题。
适用情况:当端口被占用,却又无法查出进程时,
netsh winsock reset
重置winsock目录+重启电脑。重置TCP/IP协议
netsh int ip reset {C:\resetlog.txt}
相当于卸载并重新安装TCP/IP协议,使其恢复到初次安装操作系统时的状态设置防火墙
查看图形界面firewall.cpl
1.关闭/开启防火墙netsh firewall set opmode mode=[disable/enable]
获取连接过的wifi密码
1.查看当前系统已经保存的网络netsh wlan show profiles
2.查看指定wifi的密码netsh wlan show profile name="ssid" key=clear
查看TCP全局参数
netsh interface tcp show global
设置接受窗口级别(normal)netsh interface tcp set global autotuninglevel=normal
5.ipconfig
定义:可用来显示当前的TCP/IP配置的设定值。这些信息一般用来检验人工配置的TCP/IP设置是否正确
用法:
ipconfig [/allcompartments] [/? | /all |
/renew [adapter] | /release [adapter] |
/renew6 [adapter] | /release6 [adapter] |
/flushdns | /displaydns | /registerdns |
/showclassid adapter |
/setclassid adapter [classid] |
/showclassid6 adapter |
/setclassid6 adapter [classid] ]
其中
adapter 连接名称
(允许使用通配符 * 和 ?,参见示例)选项:
/? 显示此帮助消息
/all 显示完整配置信息。
/release 释放ip。(适用于ip地址非静态分配的网卡,+/renew)
/release6 释放指定适配器的 IPv6 地址。
/renew 更新获取ip。
/renew6 更新指定适配器的 IPv6 地址。
/flushdns 刷新dns。
/registerdns 刷新所有 DHCP 租用并重新注册 DNS 名称
/displaydns 显示 DNS 解析程序缓存的内容。
/showclassid 显示适配器允许的所有 DHCP 类 ID。
/setclassid 修改 DHCP 类 ID。
/showclassid6 显示适配器允许的所有 IPv6 DHCP 类 ID。
/setclassid6 修改 IPv6 DHCP 类 ID。
ipconfig /flushdns
刷新DNS解析缓存
6.net
NET
[ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP |
HELPMSG | LOCALGROUP | PAUSE | SESSION | SHARE | START |
STATISTICS | STOP | TIME | USE | USER | VIEW ]
查看用户net user
添加用户net user [user] /add
删除用户net user [user] /del
启用/禁用用户net user [user] /active:{yes|no}
添加到管理员组net localgroup administrators [user] /add
查看共享net share
共享F盘 net share f=F:/
取消共享net share f/delete
查看特定主机共享net view [hostname]
开启服务net start [services]
查看服务services.msc
停止服务net stop [services]
7.tracert
定义:tracert是windows路由器跟踪实用程序,可以用于确定ip数据包访问目标时选择的路径,也可以用于故障排查。
用法:
tracert + ip
tracert + 域名参数
-d 不将地址解析成主机名。
-h maximum_hops 搜索目标的最大跃点数。
-j host-list 与主机列表一起的松散源路由(仅适用于 IPv4)。
-w timeout 等待每个回复的超时时间(以毫秒为单位)。
-R 跟踪往返行程路径(仅适用于 IPv6)。
-S srcaddr 要使用的源地址(仅适用于 IPv6)。
-4 强制使用 IPv4。
-6 强制使用 IPv6。
8.shutdown
用法:
C:\Windows\system32\shutdown.exe [/?]
参数:
/? 显示帮助。这与不键入任何选项是一样的。
/i 显示图形用户界面(GUI)。这必须是第一个选项。
/l 注销。这不能与 /m 或 /d 选项一起使用。
/s 关闭计算机。
/sg 关闭计算机。在下一次启动时,如果启用了自动重启登录,则将自动登录并锁定上次交互用户。登录后,重启任何已注册的应用程序。
/r 完全关闭并重启计算机。
/g 完全关闭并重启计算机。重新启动系统后,如果启用了自动重启登录,则将自动登录并锁定上次交互用户。登录后,重启任何已注册的应用程序。
/a 中止系统关闭。这只能在超时期间使用。与 /fw 结合使用,以清除任何未完成的至固件的引导。
/p 关闭本地计算机,没有超时或警告。 可以与 /d 和 /f 选项一起使用。
/h 休眠本地计算机。可以与 /f 选项一起使用。
/hybrid 执行计算机关闭并进行准备以快速启动。必须与 /s 选项一起使用。
/fw 与关闭选项结合使用,使下次启动转到固件用户界面。
/e 记录计算机意外关闭的原因。
/o 转到高级启动选项菜单并重新启动计算机。必须与 /r 选项一起使用。
/m \computer 指定目标计算机。
/t xxx 将关闭前的超时时间设置为 xxx 秒。有效范围是 0-315360000 (10 年),默认值为 30。如果超时时间大于 0,则默示为/f 参数。
/c “comment” 有关重新启动或关闭的原因的注释。最多允许 512 个字符。
/f 强制关闭正在运行的应用程序而不事先警告用户。 如果为 /t 参数指定大于 0 的值,则默示为 /f 参数。
/d [p|u:]xx:yy 提供重新启动或关闭的原因。p 指示重启或关闭是计划内的。 u 指示原因是用户定义的。 如果未指定 p 也未指定 u,则重新启动或关闭是计划外的。xx 是主要原因编号(小于 256 的正整数)。yy 是次要原因编号(小于 65536 的正整数)。两分钟后关闭计算机
1
shutdown /p -t 120
取消计划
1
shutdown /a
9.disk
磁盘修复:
chkdsk(非法关机或者系统死机)查看磁盘信息
chkdks F:
加上盘符
chkdks /f
检测错误并修复
chkdks /r
查找坏扇区并修复
...
convert
。。。diskpart(分区,格式化等等)
diskpart
进入模式
listdisk
ls磁盘
select disk 1
选择磁盘1
clean
格式化磁盘
creat partition primary
创建主分区
format fs=ntfs quick lable=“E”
分区E盘
...
系统文件缺失:
sfc
(system file check)检查系统文件完整性并修复sfc verifyonly
仅扫描,不修复sfc...
10.wget
10.net use
IPC$是共享“命名管道”的资源,利用IPC$连接者可以与目标主机建立一个空的连接而无需用户名与密码(在对方主机开启IPC$共享的情况下),利用这个连接,连接者可以得到目标主机的用户列表(在管理员未禁止导出用户列表时)
net use \\IP\ipc% "" /user:""
建立空连接(包含三个空格)net use \\IP\ipc$ "用户名" /user:"密码"
建立非空连接net use z:\\IP\c$ "密码" /user:"用户名"
映射默认连接,将对方的C盘映射为自己的Z盘net use z:\\IP\c$
如果已经和目标建立了IPC$,则可以直接用IP+盘符+$访问net use \\IP\ipc$ /del
删除一个ipc$连接net use c: /del
删除共享映射,删除映射的C盘
9.小结
- 一个简单的.bat小工具
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38@echo off
cd G:\Code\Blog\files
title hexo for blog
color 0a
chcp 65001
echo=
:start
echo 1.new
echo 2.generate
echo 3.server
echo 4.deploy
echo 5.clean
echo 6.exit
set /p var=Input your choice PLZ:
if not defined var goto start
if %var%==1 goto 1
if %var%==2 goto 2
if %var%==3 goto 3
if %var%==4 goto 4
if %var%==5 goto 5
if %var%==6 goto 6
goto start
:1
set /p var1=hexo new :
echo new %var1% ...
start G:\Code\Blog\files\source\_posts
hexo new %var1%
:2
hexo g
:3
start http://localhost:4000
hexo s
:4
hexo d
:5
hexo clean
:6
exit