Speed Learn Windows Commands

本文最后更新于 2025年1月27日 下午

Speed Windows commands


大纲


基础使用

1
2
3
4
echo "Hello World"          输出 Hello World 到终端屏幕
cls 清除屏幕
chcp 65001 修改字符编码,修复乱码
Add-AppxPackage xxx.Msixbundle 安装 msixbundle 文件

shutdown

1
2
3
4
5
6
7
shutdown    关闭、重启、注销、休眠计算机
shutdown -s -t 60 60秒后关机
shutdown -s -t 3600 1小时后关机
tsshutdn 60秒后关机
shutdown -s -f 强制关机
shutdown -s -t 时间
shutdown -a 取消 关机命令

运行脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
cscript     执行 vbs 脚本
cscript /Nologo test.vbs 执行 test.vbs 脚本

call ff.bat 调用执行 ff.bat 脚本(ff.bat 脚本执行完原脚本才会往下执行)

start 运行某程序或命令
start /max notepad.exe 最大化的方式启动记事本
start /min calc.exe 最小化的方式启动计算器
start /min "" d:\Proxifier.exe 最小化的方式启动 Proxifier 代理工具
start tasklist 启动一个 cmd 实例窗口,并运行 tasklist
start explorer f:\ 调用资源管理器打开f盘
strat iexplore "www.qq.com" 启动 ie 并打开 www.qq.com 网址
start ff.bat 启动开始执行 ff.bat(启动 ff.bat 脚本后,原脚本继续执行,不会等 ff.bat 脚本执行完)

环境变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
set         显示当前用户所有的环境变量

set path 查看 path 的环境变量值(准确的说是查看以 path 开头的环境变量)
set path= 清空 path 变量

set path=d:\execute
将 path 变量设置为 d:\execute(注:修改的 path 只会影响当前回话,也不会存储到系统配置中去;当前 cmd 窗口关闭,新设置的 path 也就不存在了)

set path=%path%;d:\execute
在 path 变量中添加 d:\execute(注:修改的 path 只会影响当前回话,也不会存储到系统配置中去;当前 cmd 窗口关闭,新设置的 path 也就不存在了)

path 显示当前 path 变量的值

path ; 清除所有搜索路径设置并指示 cmd.exe 只在当前目录中搜索
path d:\xxx;%PATH% 将 d:\xxx 路径添加到 path 中

符号

&

1
2
3
4
顺序执行多条命令,而不管命令是否执行成功

cd /d d:\src&work.exe /o c:\result.txt
先将当前工作目录切换到d:\src下,然后执行work.exe /o c:\result.txt命令

&&

1
2
3
4
顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令

find "ok" c:\test.txt && echo 成功
如果找到了"ok"字样,就显示"成功",找不到就不显示

||

1
2
3
4
顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令

find "ok" c:\test.txt || echo 不成功
如果找不到"ok"字样,就显示"不成功",找到了就不显示

|

1
2
3
4
5
6
7
管道命令

dir *.* /s/a | find /c ".exe"
先执行 dir 命令,然后对输出结果(stdout)执行 find 命令(输出当前文件夹及所有子文件夹里的 .exe 文件的个数)

dir *.* /s/a 2>&1 | find /c ".exe"
先执行 dir 命令,然后对输出结果(stdout)和错误信息(stderr)执行 find 命令(输出当前文件夹及所有子文件夹里的.exe文件的个数)

>

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
将当前命令输出以覆盖的方式重定向

tasklist > p1.txt
将 tasklist 的输出结果(stdout)以覆盖的方式重定向到 p1.txt 文件中(注:tasklist 的输出结果就不会打印到屏幕上了)

tasklist 1> p1.txt
等同于:tasklist > p1.txt

dir bin 2> p1.txt
输出结果(stdout)打印在屏幕上,错误信息(stderr)以覆盖的方式重定向到 p1.txt 中(注:bin 目录不存在时,会输出错误信息)

dir bin > p1.txt 2>&1
将错误信息(stderr)重定向到输出结果(stdout),然后将输出结果(stdout)以覆盖的方式重定向到 p1.txt 中(注:bin 目录不存在时,会输出错误信息)

dir bin 2> p1.txt 1>&2
将输出结果(stdout)重定向到错误信息(stderr),然后将错误信息(stderr)以覆盖的方式重定向到 p1.txt 中(注:bin 目录不存在时,会输出错误信息) 注:与上条命令结果一致

tasklist >nul
屏幕上不打印 tasklist 的输出结果(stdout),错误信息(stderr)仍会打印

dir bin 2>nul
屏幕上不打印命令的错误信息(stderr),输出结果(stdout)仍会打印(注:bin 目录不存在时,会输出错误信息)

dir bin >nul 2>&1
将命令的错误信息(stderr)重定向到输出结果(stdout),然后不打印输出结果(stdout)[屏幕上错误信息(stderr)和输出结果(stdout)都不打印](注:bin 目录不存在时,会输出错误信息)

dir bin 2>nul 1>&2
将命令的输出结果(stdout)重定向到错误信息(stderr),然后不打印错误信息(stderr)[屏幕上错误信息(stderr)和输出结果(stdout)都不打印](注:bin 目录不存在时,会输出错误信息)

>>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
将当前命令输出以追加的方式重定向

tasklist >> p2.txt
将 tasklist 的输出结果(stdout)以追加的方式重定向到 p2.txt 文件中(注:tasklist 的输出结果就不会打印到屏幕上了)

tasklist 1>> p2.txt
等同于:tasklist >> p2.txt

dir bin 2>> p2.txt
输出结果(stdout)打印在屏幕上,错误信息(stderr)以追加的方式重定向到 p2.txt 中(注:bin 目录不存在时,会输出错误信息)

dir bin >> p2.txt 2>&1
将错误信息(stderr)重定向到输出结果(stdout),然后将输出结果(stdout)以追加的方式重定向到 p2.txt 中(注:bin 目录不存在时,会输出错误信息)

dir bin 2>> p2.txt 1>&2
将输出结果(stdout)重定向到错误信息(stderr),然后将错误信息(stderr)以追加的方式重定向到 p2.txt 中(注:bin 目录不存在时,会输出错误信息) 注:与上条命令结果一致

<

1
2
3
4
从文件中获得输入信息,而不是从屏幕上,一般用于 date time label 等需要等待输入的命令

date <temp.txt
temp.txt 中的内容为 2005-05-01

@

1
2
3
4
命令修饰符  在执行命令前,不打印出该命令的内容

@cd /d d:\me
执行该命令时,不打印出命令的内容:cd /d d:/me

,

1
2
3
4
在某些特殊的情况下可以用来代替空格使用

dir,c:\
相当于:dir c:\

;

1
2
3
4
当命令相同的时候,可以将不同的目标用 ; 隔离开来但执行效果不变。如执行过程中发生错误则只返回错误报告但程序还是会继续执行

dir c:\;d:\;e:\
相当于顺序执行:dir c:\ dir d:\ dir e:\

会话

会话信息

1
query user                                  查看会话

踢下线

1
logoff <ID号>                               踢掉

会话设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
title 正在做命令行测试        修改当前 cmd 窗口的标题栏文字为正在做命令行测试
prompt orz: 将命令提示符修改为 orz:

exit 退出当前 cmd 窗口实例

exit 0 退出当前 cmd 窗口实例,并将过程退出代码设置为 0(0 表示成功,非 0 表示失败)
exit /B 1 退出当前 bat 脚本,并将 ERRORLEVEL 系统变量设置为 1

pause 暂停批处理程序,并显示出:请按任意键继续....

color 设置当前 cmd 窗口背景色和前景色(前景色即为字体的颜色)
color 恢复到缺省设置
color 02 将背景色设为黑色,将字体设为绿色

chcp 查看命令行环境字符编码(为一个全局设置)
936 -- GBK(一般情况下为默认编码)
437 -- 美国英语
65001 -- utf-8
1200 -- utf-16
1201 -- utf-16(Big-Endian)
12000 -- utf-32
12001 -- utf-32(Big-Endian)

永久修改 CMD 的默认字符集

regedit

[HKEY_CURRENT_USER\Console] “CodePage”=dword:0000fde9


文件和目录

目录

1
2
3
4
5
6
7
cd              切换目录
cd .. 进入父目录
cd /d d: 进入上次d盘所在的目录(或在直接输入:d:)
cd /d d:\ 进入d盘根目录
cd d: 显示上次d盘所在的目录
cd /d d:\src 进入 d:\src 目录
cd prj\src\view 进入当前目录下的 prj\src\view 文件夹

查看

目录、文件信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
dir             显示目录中的内容
dir 显示当前目录中的子文件夹与文件
dir /b 只显示当前目录中的子文件夹与文件的文件名
dir /p 分页显示当前目录中的子文件夹与文件
dir /ad 显示当前目录中的子文件夹
dir /a-d 显示当前目录中的文件
dir c:\test 显示 c:\test 目录中的内容
dir keys.txt 显示当前目录中 keys.txt 的信息
dir /S 递归显示当前目录中的内容
dir key* 显示当前目录下以 key 开头的文件和文件夹的信息
dir /AH /OS 只显示当前目录中隐藏的文件和目录,并按照文件大小从小到大排序
dir \\[IP]\c$ 查看建立IPC连接的主机的C盘目录

tree 显示目录结构
tree d:\myfiles 显示 d:\myfiles 目录结构

attrib 查看或修改文件或目录的属性 [A:存档 R:只读 S:系统 H:隐藏]
attrib 1.txt 查看当前目录下 1.txt 的属性
attrib -R 1.txt 去掉 1.txt 的只读属性
attrib +H movie 隐藏 movie 文件夹

文件内容

1
2
3
4
5
6
7
8
type            显示文本文件内容
type c:\11.txt 显示c盘中11.txt的文本内容
type conf.ini 显示当前目录下conf.ini的文本内容
type c:\11.txt | more 分页显示c盘中11.txt的文本内容

more 逐屏的显示文本文件内容

more conf.ini 逐屏的显示当前目录下conf.ini的文本内容 [空格:下一屏 q:退出 ]

创建

1
2
3
4
5
6
7
md              用于创建文件夹,不能创建文本文档或者其他
md movie music 在当前目录中创建名为 movie 和 music 的文件夹
md c:\aaa 在 C 盘的根目录下创建名为 aaa 的子目录;
md c:\aaa\USER 在 aaa 子目录下再创建 USER 子目录。

fsutil 可用于执行多种与FAT 和NTFS 文件系统相关的任务
fsutil file createnew D:\test-500.t1 524288000 创建512MB的文件示例

删除

1
2
3
4
5
6
7
8
9
10
11
12
13
del             删除文件   注意:目录及子目录都不会删除
del test
删除当前目录下的 test 文件夹中的所有非只读文件(子目录下的文件不删除;删除前会进行确认;等价于 del test\*)

del /f test
删除当前目录下的 test 文件夹中的所有文件(含只读文件;子目录下的文件不删除;删除前会进行确认;等价于 del /f test\*)

del /f /s /q test d:\test2\*.doc
删除当前目录下的 test 文件夹中所有文件及 d:\test2 中所有 doc 文件(含只读文件;递归子目录下的文件;删除前不确认)

del /ar *.* 删除当前目录下所有只读文件
del /a-s *.* 删除当前目录下除系统文件以外的所有文件


查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
find        文件中搜索字符串
find /N /I "pid" 1.txt 在 1.txt 文件中忽略大小写查找 pid 字符串,并带行号显示查找后的结果
find /C "exe" 1.txt 只显示在 1.txt 文件中查找到 exe 字符串的次数
find /V "exe" 1.txt 显示未包含 1.txt 文件中未包含 exe 字符串的行

findstr 文件中搜索字符串
findstr "hello world" 1.txt 在 1.txt 文件中搜索 hello 或 world
findstr /c:"hello world" 1.txt 在 1.txt 文件中搜索 hello world
findstr /c:"hello world" 1.txt nul 在 1.txt 文件中搜索 hello world,并在每行结果前打印出1.txt: 注:findstr 只有在2个及以上文件中搜索字符串时才会打印出每个文件的文件名,nul 表示一个空文件
findstr /s /i "Hello" *.* 不区分大小写,在当前目录和所有子目录中的所有文件中的 hello
findstr "^[0-9][a-z]" 1.txt 在 1.txt 中搜索以1个数字+1个小写字母开头子串的行
findstr /si /n encry_pwd= c:\config.ini 查询向日葵的验证码
findstr /si /n fastcode= c:\config.ini 查询向日葵的识别码
findstr /si /n fastcodehistroy= c:\config.ini 查询向日葵的连接历史

修改

1
2
3
ren             文件或目录重命名
ren rec.txt rec.ini 将当前目录下的 rec.txt 文件重命名为 rec.ini
ren c:\test test_01 将 c 盘下的 test 文件夹重命名为 test_01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
copy            拷贝文件
copy /Y key.txt c:\doc 将当前目录下的 key.txt 拷贝到 c:\doc 下(不询问,直接覆盖写)
copy key.txt + 复制文件到自己,实际上是修改了文件日期

copy key.txt c:\doc
将当前目录下的 key.txt 拷贝到 c:\doc 下(若doc中也存在一个 key.txt 文件,会询问是否覆盖)

copy jobs c:\doc
将当前目录下 jobs 文件夹中文件(不递归子目录)拷贝到 c:\doc 下(若 doc 中也存在相应的文件,会询问是否覆盖)

copy key.txt c:\doc\key_bak.txt
将当前目录下的 key.txt 拷贝到 c:\doc 下,并重命名为 key_bak.txt(若 doc 中也存在一个 key_bak.txt 文件,会询问是否覆盖)

copy /Y key1.txt + key2.txt key.txt
将当前目录下的 key1.txt 与 key2.txt 的内容合并写入 key.txt 中(不询问,直接覆盖写)

copy /B art_2.7z.* art_2.7z
将当前目录下的 art_2.7z. 开头的所有文件(按照名称升序排序)依次合并生成 art_2.7z

copy /B art_2.7z.001+art_2.7z.002 art_2.7z
将当前目录下的 art_2.7z.001、art_2.7z.002 文件合并生成 art_2.7z

copy test.txt \\host\c$\windows\temp\test.txt 远程拷贝
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
xcopy           更强大的复制命令
xcopy c:\bat\hai d:\hello\ /y /h /e /f /c
将 c:\bat\hai 中的所有内容拷贝到 d:\hello 中 注意:需要在 hello 后加上 \ 表示 hello 为一个目录,否则 xcopy 会询问 hello 是 F,还是 D

xcopy c:\bat\hai d:\hello\ /d:12-29-2010
将 c:\bat\hai 中的20101229日后更改的文件拷贝到 d:\hello

robocopy 更强大的复制命令
robocopy .\Plugins .\PluginsDest /MIR /xd Intermediate Binaries
将当前目录下 Plugins 中所有内容(排除名为 Intermediate 和 Binaries 的文件夹)保留目录结构拷贝到当前目录下的 PluginsDest 中(PluginsDest 不存在会自动创建)

robocopy c:\test d:\test2 /MIR /xd Intermediate /xf UE4Editor-SGame-Win64-DebugGame.dll *.pdb
将c:\test中所有内容(排除名为 UE4Editor-SGame-Win64-DebugGame.dll 和 pdb 后缀的文件)保留目录结构拷贝到 d:\test2中(d:\test2 不存在会自动创建)

move 移动文件
move *.png test
将当前目录下的 png 图片移动到当前目录下 test 文件夹中 (若 test 中也存在同名的 png 图片,会询问是否覆盖)

move /Y *.png test
将当前目录下的 png 图片移动到当前目录下 test 文件夹中 (不询问,直接覆盖写)

move 1.png d:\test\2.png
将当前目录下的 1.png 移动到 d 盘 test 文件夹中,并重命名为 2.png (若 test 中也存在同名的png图片,会询问是否覆盖)

move test d:\new
若 d 盘中存在 new 文件夹,将当前目录下的 test 文件夹移动到 d 盘 new 文件夹中;若不存在,将当前目录下的 test 文件夹移动到 d 盘,并重命名为 new

replace 替换文件[即使这个文件在使用,仍然可以替换成功]
replace d:\love.mp3 d:\mp3
使用 d 盘下的 love.mp3 强制替换 d 盘 mp3 目录中的 love.mp3 文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
assoc           设置'文件扩展名'关联到的'文件类型'
assoc 显示所有'文件扩展名'关联
assoc .txt 显示.txt代表的'文件类型',结果显示.txt=txtfile
assoc .doc 显示.doc代表的'文件类型',结果显示.doc=Word.Document.8
assoc .exe 显示.exe代表的'文件类型',结果显示.exe=exefile
assoc .txt=txtfile 恢复.txt的正确关联

ftype 设置'文件类型'关联到的'执行程序和参数'
ftype 显示所有'文件类型'关联
ftype exefile 显示exefile类型关联的命令行,结果显示 exefile="%1" %*
ftype txtfile=C:\Windows\notepad.exe %1 设置txtfile类型关联的命令行为:C:\Windows\notepad.exe %1

当双击一个.txt文件时,windows并不是根据.txt直接判断用notepad.exe打开
而是先判断.txt属于txtfile'文件类型';再调用txtfile关联的命令行:txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1

forfiles 递归目录执行命令

forfiles /p . /m .svn /s /c "cmd /c svn up -r12005"
在当前目录下查找含有.svn的文件或目录(递归子目录),并对该目录执行指定版本号svn更新

forfiles /p c:\myfiles /m .svn /s /c "cmd /c svn up -r12005"
在c:\myfiles目录下查找含有.svn的文件或目录(递归子目录),并对该目录执行指定版本号svn更新

链接

win7 下的 mklink 命令通过指定参数可以建立出不同形式的文件或目录链接,分为硬链接(hard link)、符号链接(symbolic link)和目录联接(junction)三种。

  • 符号链接(symbolic link)

    建立一个软链接相当于建立一个文件(或目录),这个文件(或目录)用于指向别的文件(或目录),和 win 的快捷方式有些类似。删除这个链接,对原来的文件(或目录)没有影像没有任何影响;而当你删除原文件(或目录)时,再打开链接则会提示“位置不可用”。

  • 目录联接(junction)

    作用基本和符号链接类似。区别在于,目录联接在建立时会自动引用原目录的绝对路径,而符号链接允许相对路径的引用。

  • 硬链接(hard link)

    建立一个硬链接相当于给文件建立了一个别名,例如对 1.txt 创建了名字为 2.txt 的硬链接;

    若使用记事本对 1.txt 进行修改,则 2.txt 也同时被修改,若删除 1.txt,则 2.txt 依然存在,且内容与 1.txt 一样。

建立链接请注意:

  1. 建立文件或目录链接限于 NTFS 文件系统;符号链接(目录联接)的建立可以跨分区(如:在 d 盘可以建立 c 盘文件或目录的链接),硬链接只能建立同一分区内的文件指向
  2. 硬链接只能用于文件,不能用于目录;目录联接只能用于目录;符号链接则均可以;
  3. 硬链接不允许对空文件建立链接,符号(软链接可以。
    1
    2
    mklink          创建符号链接(win7 引入);创建的符号链接文件上会有一个类似快捷方式的箭头
    mklink /j "C:\Users" "D:\Users" 创建 D 盘 Users 目录联接到 C 盘,并命名为 Users

辅助

Certutil

可以使用该命令计算指定文件的哈希值

1
2
3
CertUtil -hashfile 文件名(可包含路径) md5

# 算法名可以取以下值:MD2, MD5, MD5, SHA1, SHA256, SHA384, SHA512。当该参数被省略时,使用 SHA1 算法。

网络管理

IPC$

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
39
40
41
42
43
net use                                         # 查看建立的连接
net use \\IP\ipc$ " " /user:" " # 建立 IPC 空链接

net use \\IP\ipc$ "[pass]" /user:"[username]" # 建立 IPC 非空链接
net use \\192.168.1.1\ipc$ "123456" /user:"administrator"

net use z: \\ip\ipc$ "pass" /user:"user" # 直接登录后映射对方 C: 到本地为 H:
net use h: ipc$ # 登录后映射对方 C: 到本地为 H:
net use \\IP\ipc$ /del # 删除 IPC 链接
net use h: /del # 删除映射对方到本地的为 H: 的映射

net user [username] [pass] /add # 建立用户
net user guest /active:yes # 激活 guest 用户
net user # 查看有哪些用户
net user [username] # 查看帐户的属性
net localgroup administrators # 列出本地管理员组成员
net localgroup administrators [username] /add # 把"用户"添加到管理员中使其具有管理员权限
net start # 查看开启了哪些服务

net start [servername] # 开启服务
net start telnet # 开启 telnet 服务
net start schedule

net stop [servername] # 停止某服务
net time [IP] # 查看对方时间
net time [IP] /set # 设置本地计算机时间与"目标IP"主机的时间同步,加上参数 /yes 可取消确认
net view # 查看本地局域网内开启了哪些共享
net view [IP] # 查看对方局域网内开启了哪些共享
net config # 显示系统网络设置
net logoff # 断开连接的共享
net pause [servername] # 暂停某服务
net send ip "xxx" # 向对方发信息
net ver # 局域网内正在使用的网络连接类型和信息

net share # 查看本地开启的共享
net share ipc$ # 开启 ipc$ 共享
net share db$=d:\config # 开启一个共享名为 db$,在 d:\config
net share ipc$ /del # 删除 ipc$ 共享
net share c$=c: # 恢复默认共享
net share c$ /del # 删除 C: 共享

net user guest 12345 # 用 guest 用户登录后用将密码改为 12345
net password [pass] # 更改系统登录密码

查看网络信息

ipconfig

1
2
3
4
5
6
ipconfig /all               # 显示完整配置信息
ipconfig /release # 释放指定适配器的 IPv4 地址
ipconfig /release6 # 释放指定适配器的 IPv6 地址
ipconfig /renew # 更新指定适配器的 IPv4 地址
ipconfig /renew6 # 更新指定适配器的 IPv6 地址
ipconfig /flushdns # 清除 DNS 解析程序缓存

netstat

1
2
3
4
5
6
7
netstat -a                  # 查看开启了哪些端口,常用 netstat -an
netstat -n # 查看端口的网络连接情况,常用 netstat -an
netstat -v # 查看正在进行的工作
netstat -p [protocol] # 例:netstat -p tcq/ip 查看某协议使用情况
netstat -s # 查看正在使用的所有协议使用情况
netstat -A ip # 对方136到139其中一个端口开了的话,就可查看对方最近登录的用户名
netstat -bn # 查看每个程序的连接

route

1
2
3
4
5
route print
route print 192.*
route add 0.0.0.0 mask 0.0.0.0 192.168.6.1 # 增加网关
route delete 0.0.0.0 mask 0.0.0.0 192.168.6.1 # 删除网关
route change 16.21.0.0 mask 255.255.0.0 16.28.0.25 # 将 16.21.0.0 段的网关改为 0.25

arp

1
2
arp -a      # 查看全部 arp 条目
arp -d ip # 删除

nslookup

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
nslookup domain [dns-server]            # 查询域名A记录
nslookup -qt=type domain [dns-server] # 查询其他记录
# A 地址记录
# AAAA 地址记录
# AFSDB Andrew文件系统数据库服务器记录
# ATMA ATM地址记录
# CNAME 别名记录
# HINFO 硬件配置记录,包括 CPU、操作系统信息
# ISDN 域名对应的 ISDN 号码
# MB 存放指定邮箱的服务器
# MG 邮件组记录
# MINFO 邮件组和邮箱的信息记录
# MR 改名的邮箱记录
# MX 邮件服务器记录
# NS 名字服务器记录
# PTR 反向记录
# RP 负责人记录
# RT 路由穿透记录
# SRV TCP服务器信息记录
# TXT 域名对应的文本信息
# X25 域名对应的X.25地址记录

网络排错工具

ping

1
2
3
4
5
ping ip(或域名)             # 向对方主机发送默认大小为32字节的数据
ping -l 数据包大小 ip
ping -n # 发送数据次数 ip
ping -t ip # 一直 ping.
ping -t -l 65500 ip # 发送大于64K的文件并一直 ping

tracert

1
2
3
4
5
6
7
8
tracert -d                 # 不将地址解析成主机名.
tracert -h maximum_hops # 搜索目标的最大跃点数.
tracert -j host-list # 与主机列表一起的松散源路由(仅适用于 IPv4).
tracert -w timeout # 等待每个回复的超时时间(以毫秒为单位).
tracert -R # 跟踪往返行程路径(仅适用于 IPv6).
tracert -S srcaddr # 要使用的源地址(仅适用于 IPv6).
tracert -4 # 强制使用 IPv4.
tracert -6 # 强制使用 IPv6.

RDP

开启 rdp

1
2
3
4
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
REG add HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /d 0 /t REG_DWORD /f

wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="") CALL SetAllowTSConnections 1

更改终端端口为 2008(十六进制为:0x7d8)

1
2
3
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\Wds\rdpwd\Tds\tcp /v PortNumber /t REG_DWORD /d 0x7d8 /f

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber /t REG_DWORD /d 0x7D8 /f

查看 RDP 服务端口

1
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber  /*出来的结果是 16 进制

防火墙

netsh

查看防火墙状态

1
2
netsh firewall show state
netsh advfirewall show allprofiles

开启防火墙

1
2
netsh firewall set opmode enable
netsh firewall set allprofiles state on

关闭防火墙

1
2
netsh firewall set opmode disable
netsh advfirewall set allprofiles state off

设置防火墙日志路径

1
netsh advfirewall set currentprofile logging filename "C:\Windows\firewall.log"

添加防火墙规则

1
netsh advfirewall firewall add rule name="Remote Desktop" dir=in action=allow protocol=tcp localport=3389           允许 3389 端口

删除防火墙规则

1
netsh advfirewall firewall delete rule name="rule_name"

添加端口规则

1
netsh firewall portopening tcp 1234 rule_name

删除端口规则

1
netsh firewall delete portopening tcp 1234

添加程序规则

1
netsh firewall add allowedprogram "C:\\nc.exe" "allow nc" enable

删除程序规则

1
netsh firewall delete allowedprogram "C:\\nc.exe"

添加端口转发

1
netsh interface portproxy add v4tov4 [listenaddress=victim_ip] listenport=victim_port connectaddress=attack_ip connectport=attack_port

删除端口转发

1
netsh interface portproxy delete v4tov4 [listenaddress=victim_ip] listenport=victim_port

查看端口转发

1
2
3
4
5
netsh interface portproxy show all
netsh interface portproxy show v4tov4
netsh interface portproxy show v4tov6
netsh interface portproxy show v6tov4
netsh interface portproxy show v6tov6

安装 IPv6

1
netsh interface ipv6 install

查看无线网络信息

1
netsh wlan show profiles

查看指定 WIFI 密码

1
netsh wlan show profiles wifi_name key=clear

系统管理

系统信息

日志


系统设置

时间

1
2
3
4
5
6
7
time    # 显示或设置当前时间
time /t # 显示当前时间
time # 设置新的当前时间(格式:hh:mm:ss),直接回车则表示放弃设置

date # 显示或设置当前日期
date /t # 显示当前日期
date # 设置新的当前日期(格式:YYYY/MM/DD),直接回车则表示放弃设置

注册表

reg 注册表相关操作

参数说明:

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# KeyName [\Machine]FullKey
# Machine 为远程机器的机器名 - 忽略默认到当前机器。
# 远程机器上只有 HKLM 和 HKU。
# FullKey ROOTKEY+SubKey
# ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
# SubKey 所选ROOTKEY下注册表项的完整名
# /v 所选项之下要添加的值名
# /ve 为注册表项添加空白值名<无名称>
# /t RegKey 数据类型
# [ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN |
# REG_DWORD | REG_BINARY | REG_DWORD_LITTLE_ENDIAN |
# REG_NONE | REG_EXPAND_SZ ]
# 如果忽略,则采用 REG_SZ
# /s 指定一个在 REG_MULTI_SZ 数据字符串中用作分隔符的字符;如果忽略,则将""用作分隔符
# /d 要分配给添加的注册表 ValueName 的数据
# /f 不提示,强行改写现有注册表项

reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v MyApp /t REG_SZ /d "c:\tools\myapp.exe" /f
# 强制添加一条开机启动 c:\tools\myapp.exe 程序的注册表项

reg add "HKLM\SOFTWARE\ScmClient" /v AgreementConfirmed /t REG_SZ /d 1 /f
# 解决 32 位 xp 打开 ioa 后,弹出的框关不掉问题

reg add "HKCU\ControlPanel\Desktop" /v WaitToKIllAppTimeOut /t REG_SZ /d 10000 /f
# 强制添加一条加速关闭应用程序的注册表项

reg add "hkcu\software\Unity Technologies\Unity Editor 4.x" /v JdkPath_h4127442381 /t REG_SZ /f
# 将 JdkPath_h4127442381 设置为空

reg add "HKCR\*\shell\WinDbg\command" /t REG_SZ /d "\"D:\Program Files (x86)\windbg\windbg.exe\" -z \"%1\" " /f
# 强制添加 windbg 打开 dump 文件到右键菜单的注册表项(不指明 /v,键值将写入默认值名中)

reg add "HKCR\*\shell\WinHex\command" /t REG_SZ /d "\"D:\software-setup\system\winhex\winhex.exe\" \"%1\" " /f
# 强制添加 winhex 到右键菜单的注册表项(不指明 /v,键值将写入默认值名中)

reg add "hkcu\software\microsoft\windows\currentversion\internet settings" /v AutoConfigURL /t REG_SZ /d "http://txp-01.tencent.com/proxy.pac" /f
# 为 IE 设置代理:http://txp-01.tencent.com/proxy.pac

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f
# 关闭 IE 代理服务器选项

reg add "hkcu\software\Sysinternals\Process Monitor" /v EulaAccepted /t REG_DWORD /d 1 /f
# 为 Procmon.exe 工具(Process Monitor 为其属性面板上的描述名)添加 License 同意

reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v MyApp /f
# 强制删除值名的 MyApp 的注册表项

reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe" /f
# 强制删除让任务栏里的任务管理器为灰色的注册表项

reg delete HKEY_CURRENT_USER\Environment /v HTTP_proxy /f
# 删除 http 代理

reg delete HKEY_CURRENT_USER\Environment /v HTTPS_proxy /f
# 删除 https 代理

reg copy "hkcu\software\microsoft\winmine" "hkcu\software\microsoft\winminebk" /s /f
# 强制复制 winmine 下所有的子项与值到 winminebk 中

reg export "hkcu\software\microsoft\winmine" c:\regbak\winmine.reg
# 导出 winmine 下所有的子项与值到 c:\regbak\winmine.reg 文件中

reg import c:\regbak\winmine.reg
# 导入 c:\regbak\winmine.reg 文件到注册表中

reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE" /s
# 查询 ie 的安装路径

reg query HKCR\.dsw /ve
# 查询 .dsw 默认值

reg query HKEY_CURRENT_USER\Software\Tencent\QQGame\SYS /v GameDirectory
# 查询 QQGame 安装路径

regedit

1
regedit -s xxxx.reg     # 导入注册表项

计划任务

at

1
2
3
4
5
6
7
at                                  # 查看所有的计划任务
at [id] # 开启已注册的某个计划任务
at /delete # 停止所有计划任务,用参数 /yes 则不需要确认就直接停止
at [id] /delete # 停止某个已注册的计划任务
at [ip] time [progame/cmd] # 在某时间运行对方某程序
at \\127.0.0.1 time C:\windows\1.bat
at [ip] time [progame/cmd] /r # 在某时间运行对方某程序并重新启动计算机

Schtasks.exe

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# /SC   schedule     指定计划频率.有效计划任务:  MINUTE、 HOURLY、DAILY、WEEKLY、MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT.
# /MO modifier 改进计划类型以允许更好地控制计划重复周期.有效值列于下面"修改者"部分中.
# /D days 指定该周内运行任务的日期.有效值:MON、TUE、WED、THU、FRI、SAT、SUN和对 MONTHLY 计划的 1 - 31(某月中的日期).通配符"*"指定所有日期.
# /TN taskname 以路径\名称形式指定对此计划任务进行唯一标识的字符串.
# /TR taskrun 指定在这个计划时间运行的程序的路径和文件名.例如: C:\windows\system32\calc.exe

schtasks /query /fo LIST /v # 以较为详细易于阅读的格式显示本机所有任务计划信息
schtasks /delete /tn "Soda Build" /f # 强制删除 Soda Build 名称的任务计划(不进行确认)
schtasks /run /tn "Soda Build" # 执行名为 Soda Build 的任务计划
schtasks /end /tn "Soda Build" # 终止执行名为 Soda Build 的任务计划

SCHTASKS /Create /SC MONTHLY /MO first /D SUN /TN gametime /TR c:\windows\system32\freecell
# 创建计划任务 "gametime",在每月的第一个星期天运行"空当接龙".

schtasks /create /sc minute /mo 20 /tn "Soda Build" /tr d:\check.vbs
# 创建一个名为 Soda Build 的任务计划:该任务计划每 20 分钟执行一下 d:\check.vbs 脚本

schtasks /create /tn "Soda Build" /tr D:\updateall.bat /sc daily /st 02:06 /f
# 强制创建一个名为 Soda Build 的任务计划(不进行确认):该任务计划每天凌晨 2 点 06 分执行一下 D:\updateall.bat 脚本

schtasks /change /tn "Soda Build" /tr d:\check2.vbs
# 将名为 Soda Build 的任务计划的执行脚本修改为 d:\check2.vbs

组策略

强制更新组策略

1
gpupdate /force

输入法

简繁切换

ctrl+shift+f


账号管控

账号

1
2
3
4
5
net user                                    # 查看系统账户
net user test # 查看账户 test 的属性
net user test 1234abcd /add # 添加用户
net localgroup administrators test /add # 将用户添加到管理组
net user test /del # 删除用户

1
2
3
4
5
6
7
8
net localgroup                          # 查看系统的组
net localgroup marketGroup /add # 新建一个 marketGroup 的组
net localgroup marketGroup test /add # 将用户 test 加入 marketGroup 组中
net localgroup markGroup # 查看 markGroup 组内的成员
net localgroup marketGroup test /del # 将用户 test 从 marketGroup 组中移除
net localgroup marketGroup /del # 删除 marketGroup 组
net localgroup "remote desktop users" test /add # 将用户 test 加入远程桌面组
net localgroup "remote desktop users" test /del # 将用户 test 从远程桌面组删除

进程管理

进程信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
wmic
wmic process where Caption="buyticket.exe" get commandline,ExecutablePath,ProcessId,ThreadCount /value
# 查看名为"buyticket.exe"所有进程命令行,exe 全路径,PID 及线程数

wmic process where Caption="buyticket.exe" get ExecutablePath,HandleCount /value
# 查看名为"buyticket.exe"所有进程的 exe 全路径及当前打开的句柄数

wmic process where Caption="buyticket.exe" get ExecutablePath,VirtualSize,WorkingSetSize /value
# 查看名为"buyticket.exe"所有进程的 exe 全路径、当前虚拟地址空间占用及物理内存工作集

tasklist # 显示所有进程及其服务

tasklist /svc

tasklist /fi "pid eq 1234" /svc # 显示指定进程信息
tasklist /fi "status eq running" /svc
tasklist /fi "status eq running" /fi "username eq nt authority\system" /svc

tasklist /m xxx.dll # 显示使用给定 exe/dll 名称的所有进程

tasklist /s ip /u username /p password /svc # 显示远程主机的进程信息

进程处理

1
2
3
4
5
6
7
8
taskkill        # 终止指定的进程及其子进程(根据进程名称)

taskkill /f /im notepad.exe /t
taskkill /f /pid 1234 /t # 终止指定进程及其子进程(根据进程 ID)
taskkill /f /fi "pid eq 1234" /t

taskkill /s ip /u username /p password /pid 1234 /t # 终止远程主机的指定进程
taskkill /s ip /u username /p password /fi "pid eq 1234" /t

设备管理

硬盘-数据

卷标设置

1
2
3
vol             # 显示当前分区的卷标
label # 显示当前分区的卷标,同时提示输入新卷标
label c:system # 设置 c 盘的卷标为 system

格式化

1
2
3
format          # 格式化磁盘
format J: /FS:ntfs # 以 ntfs 类型格式化 J 盘 [类型有:FAT、FAT32、exFAT、NTFS 或 UDF]
format J: /FS:fat32 /Q # 以 fat32 类型快速格式化J盘

状态检查

1
chkdsk /f D:    # 检查磁盘 D 并显示状态报告;加参数/f表示同时会修复磁盘上的错误

磁盘映射

1
2
3
4
5
subst           # 磁盘映射  -- 磁盘映射信息都保存在注册表以下键值中:HKEY_CURRENT_USER\Network
subst # 显示目前所有的映射
subst z: \\com\software # 将 \\com\software 共享映射为本地 z 盘
subst y: e:\src # 将 e:\src 映射为本地 y 盘
subst z: /d # 删除 z 盘映射

显卡

重启显卡驱动

Ctrl + Shift + Win + B


安全设置

关闭 Denfnder

1
net stop windefend

添加域管理员账号

1
2
3
4
net user mstlab mstlab /add /domain             # 添加用户并设置密码
net group "Domain Admins" lemon /add /domain # 将普通域用户提升为域管理员
net user guest /active:yes # 激活 guest 用户
net user guest mstlab # 更改 guest用户的密码

修改指定域用户的密码

1
dsquery user -samid username | dsmod user -pwd new_password

Speed Learn Windows Commands
https://msfts.org/2024/10/28/Speed-learn-windows-commands/
作者
Jas0n0ss
发布于
2024年10月29日
许可协议