2023年11月26日发(作者:)

cmd常⽤命令

打开"运⾏"对话框(Win+R),输⼊cmd,打开控制台命令窗⼝...

也可以通过cmd /c 命令 cmd /k 命令的⽅式来直接运⾏命令

注:/c表⽰执⾏完命令后关闭cmd窗⼝;/k表⽰执⾏完命令后保留cmd窗⼝

# 控制台命令窗⼝中⼀些技巧

复制内容:右键弹出快捷菜单,选择标记(K),然后选中所需复制的内容,然后右键即可

粘贴内容:右键弹出快捷菜单,选择粘贴(P)

在⽂件夹空⽩处按住Shift,然后右键弹出快捷菜单,可以看到在此处打开命令⾏窗⼝

使⽤上下⽅向键,翻看使⽤过的命令

tab补全功能

命令参数的路径:要使⽤反斜杠'',不要使⽤正斜杠'/' 如:del d:test2file

命令参数的路径:若存在空格,应使⽤双引号将路径引起来 如:del "d:program "

⽂件及⽬录名中不能包含下列任何字符: / : * ? " < > |

rem // 在批处理⽂件中添加注解,其后的命令不会被执⾏,但会回显

:: // ::也可以起到rem的注释作⽤,且不会有回显

任何以冒号:开头的字符⾏, 在批处理中都被视作标号(label, ⽽直接忽略其后的所有内容

:冒号后紧跟⼀个以字母数字开头的字符串,goto语句可以识别

:冒号后紧跟⼀个⾮字母数字的⼀个特殊符号,goto⽆法识别的标号,可以起到注释作⽤,::常被⽤作注释符号

0. 获取帮助

command /? // 查看command命令帮助说明

1. 中断命令执⾏

Ctrl + Z

2. ⽂件/⽬录

cd 切换⽬录

例:cd // 显⽰当前⽬录

例:cd .. // 进⼊⽗⽬录

例:cd /d d: // 进⼊上次d盘所在的⽬录(或在直接输⼊:d:

例:cd /d d: // 进⼊d盘根⽬录

例:cd d: // 显⽰上次d盘所在的⽬录

例:cd /d d:src // 进⼊d:src⽬录

例:cd prjsrcview // 进⼊当前⽬录下的prjsrcview⽂件夹

pushd popd 使⽤栈来维护当前⽬录

md d:mp3 // C:建⽴mp3⽂件夹

md d:mp4 // D:建⽴mp4⽂件夹

cd /d d:mp4 // 更改当前⽬录为d:mp4

pushd c:mp3 // 将当前⽬录d:mp4⼊栈,并切换当前⽬录为c:mp3

popd // 将刚才保存的d:mp4弹栈,并设置为当前⽬录

dir 显⽰⽬录中的内容

例:dir // 显⽰当前⽬录中的⼦⽂件夹与⽂件

例:dir /b // 只显⽰当前⽬录中的⼦⽂件夹与⽂件的⽂件名

例:dir /p // 分页显⽰当前⽬录中的⼦⽂件夹与⽂件

例:dir /ad // 显⽰当前⽬录中的⼦⽂件夹

例:dir /a-d // 显⽰当前⽬录中的⽂件

例:dir c:test // 显⽰c:test⽬录中的内容

例:dir // 显⽰当前⽬录中的信息

例:dir /S // 递归显⽰当前⽬录中的内容

例:dir key* // 显⽰当前⽬录下以key开头的⽂件和⽂件夹的信息

例:dir /AH /OS // 只显⽰当前⽬录中隐藏的⽂件和⽬录,并按照⽂件⼤⼩从⼩到⼤排序

tree 显⽰⽬录结构

例:tree d:myfiles // 显⽰d:myfiles⽬录结构

ren ⽂件或⽬录重命名

例:ren // 将当前⽬录下的⽂件重命名为

例:ren c:test test_01 // c盘下的test⽂件夹重命名为test_01

例:ren Logs-%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%.txt // 将当前⽬录下的⽂件重命名为Logs-20150114_Logs-

20150114_ (注意:⼩时只有个位数时会多⼀个空格,可以使⽤字符串替换:将空格替换成0

md 创建⽬录

例:md movie music // 在当前⽬录中创建名为moviemusic的⽂件夹

例:md d:testmovie // 创建d:testmovie⽬录

rd 删除⽬录

例:rd movie // 删除当前⽬录下的movie空⽂件夹

例:rd /s /q d:test // 使⽤安静模式删除d:test(除⽬录本⾝外,还将删除指定⽬录下的所有⼦⽬录和⽂件)

copy 拷贝⽂件

例:copy c:doc // 将当前⽬录下的拷贝到c:doc下(若doc中也存在⼀个⽂件,会询问是否覆盖)

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

例:copy c:dockey_ // 将当前⽬录下的拷贝到c:doc下,并重命名为key_(若doc中也存在⼀个key_⽂件,会询问是否覆盖)

例:copy /Y c:doc // 将当前⽬录下的拷贝到c:doc下(不询问,直接覆盖写)

例:copy + // 复制⽂件到⾃⼰,实际上是修改了⽂件⽇期

例:copy /Y + // 将当前⽬录下的的内容合并写⼊中(不询问,直接覆盖写)

例: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.001art_2.7z.002⽂件合并⽣成art_2.7z

xcopy 更强⼤的复制命令

例:xcopy c:bathai d:hello /y /h /e /f /c // c:bathai中的所有内容拷贝到d:hello 注意:需要在hello后加上 表⽰hello为⼀个⽬录,否则xcopy会询问helloF,还是D

例:xcopy c:bathai d:hello /d:12-29-2010 // c:bathai中的20101229⽇后更改的⽂件拷贝到d:hello

robocopy 更强⼤的复制命令

例:robocopy .Plugins .PluginsDest /MIR /xd Intermediate Binaries // 将当前⽬录下Plugins中所有内容(排除名为IntermediateBinaries的⽂件夹)保留⽬录结构拷贝到当前⽬录

下的PluginsDest中(PluginsDest不存在会⾃动创建)

例:robocopy c:test d:test2 /MIR /xd Intermediate /xf *.pdb // c:test中所有内容(排除名为

pdb后缀的⽂件)保留⽬录结构拷贝到d:test2中(d:test2不存在会⾃动创建)

move 移动⽂件

例:move *.png test // 将当前⽬录下的png图⽚移动到当前⽬录下test⽂件夹中 (若test中也存在同名的png图⽚,会询问是否覆盖)

例:move /Y *.png test // 将当前⽬录下的png图⽚移动到当前⽬录下test⽂件夹中 (不询问,直接覆盖写)

例:move d: // 将当前⽬录下的移动到dtest⽂件夹中,并重命名为 (若test中也存在同名的png图⽚,会询问是否覆盖)

例:move test d:new // d盘中存在new⽂件夹,将当前⽬录下的test⽂件夹移动到dnew⽂件夹中;若不存在,将当前⽬录下的test⽂件夹移动到d盘,并重命名为new

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⽂件(含只读⽂件;递归⼦⽬录下的⽂件;删除前不确认)

++++++++++++++++++++++

/ar/ah/as/aa 分别表⽰删除只读、隐藏、系统、存档⽂件

/a-r/a-h/a-s/a-a 分别表⽰删除除只读、隐藏、系统、存档以外的⽂件

++++++++++++++++++++++

例:del /ar *.* // 删除当前⽬录下所有只读⽂件

例:del /a-s *.* // 删除当前⽬录下除系统⽂件以外的所有⽂件

replace 替换⽂件即使这个⽂件在使⽤,仍然可以替换成功

例:replace d:3 d:mp3 // 使⽤d盘下的3强制替换dmp3⽬录中的3⽂件

mklink 创建符号链接(win7引⼊)创建的符号链接⽂件上会有⼀个类似快捷⽅式的箭头

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

(1) 符号链接(symbolic link)

建⽴⼀个软链接相当于建⽴⼀个⽂件(或⽬录),这个⽂件(或⽬录)⽤于指向别的⽂件(或⽬录),和win的快捷⽅式有些类似。

删除这个链接,对原来的⽂件(或⽬录)没有影像没有任何影响;⽽当你删除原⽂件(或⽬录)时,再打开链接则会提⽰位置不可⽤

(2) ⽬录联接(junction)

作⽤基本和符号链接类似。区别在于,⽬录联接在建⽴时会⾃动引⽤原⽬录的绝对路径,⽽符号链接允许相对路径的引⽤。

(3) 硬链接(hard link)

建⽴⼀个硬链接相当于给⽂件建⽴了⼀个别名,例如对创建了名字为的硬链接;

若使⽤记事本对进⾏修改,则也同时被修改,若删除,则依然存在,且内容与⼀样。

建⽴链接请注意:

a、建⽴⽂件或⽬录链接限于 NTFS ⽂件系统;符号链接(⽬录联接)的建⽴可以跨分区(如:在d盘可以建⽴c盘⽂件或⽬录的链接),硬链接只能建⽴同⼀分区内的⽂件指向

b、硬链接只能⽤于⽂件,不能⽤于⽬录;⽬录联接只能⽤于⽬录;符号链接则均可以;

c、硬链接不允许对空⽂件建⽴链接,符号(软)链接可以。

+++++++++++++++++++++++++++++++++

mklink [[/d] | [/h] | [/j]] Link Target

/d 创建⽬录符号链接。黙认为⽂件符号链接。

/h 创建硬链接,⽽不是符号链接。

/j 创建⽬录联接。

Link 指定新的符号链接名称。

Target 指定新链接引⽤的路径(相对或绝对)

+++++++++++++++++++++++++++++++++

例:mklink /j "C:Users" "D:Users" // 创建DUsers⽬录联接到C盘,并命名为Users

attrib 查看或修改⽂件或⽬录的属性 A:存档 R:只读 S:系统 H:隐藏

例:attrib // 查看当前⽬录下的属性

例:attrib -R // 去掉的只读属性

例:attrib +H movie // 隐藏movie⽂件夹

assoc 设置'⽂件扩展名'关联到的'⽂件类型'

例:assoc // 显⽰所有'⽂件扩展名'关联

例:assoc .txt // 显⽰.txt代表的'⽂件类型',结果显⽰.txt=txtfile

例:assoc .doc // 显⽰.doc代表的'⽂件类型',结果显⽰.doc=nt.8

例:assoc .exe // 显⽰.exe代表的'⽂件类型',结果显⽰.exe=exefile

例:assoc .txt=txtfile // 恢复.txt的正确关联

ftype 设置'⽂件类型'关联到的'执⾏程序和参数'

例:ftype // 显⽰所有'⽂件类型'关联

例:ftype exefile // 显⽰exefile类型关联的命令⾏,结果显⽰ exefile="%1" %*

例:ftype txtfile=C: %1 // 设置txtfile类型关联的命令⾏为:C: %1

当双击⼀个.txt⽂件时,windows并不是根据.txt直接判断⽤打开

⽽是先判断.txt属于txtfile'⽂件类型';再调⽤txtfile关联的命令⾏:txtfile=%SystemRoot% %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更新

3. ⽂件查看

type 显⽰⽂本⽂件内容

例:type c: // 显⽰c盘中的⽂本内容

例:type // 显⽰当前⽬录下的⽂本内容

例:type c: | more // 分页显⽰c盘中的⽂本内容

more 逐屏的显⽰⽂本⽂件内容

例:more // 逐屏的显⽰当前⽬录下的⽂本内容 空格:下⼀屏 q:退出

4. 注册表命令

reg 注册表相关操作

参数说明:

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 "HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun" /v MyApp /t REG_SZ /d "c:" /f // 强制添加⼀条开机启动c:程序的注册表

例:reg add "HKLMSOFTWAREScmClient" /v AgreementConfirmed /t REG_SZ /d 1 /f // 解决32xp打开ioa后,弹出的框关不掉问题

例:reg add "HKCUControlPanelDesktop" /v WaitToKIllAppTimeOut /t REG_SZ /d 10000 /f // 强制添加⼀条加速关闭应⽤程序的注册表项

例:reg add "hkcusoftwareUnity TechnologiesUnity Editor 4.x" /v JdkPath_h4127442381 /t REG_SZ /f // JdkPath_h4127442381设置为空

例:reg add "HKCR*shellWinDbgcommand" /t REG_SZ /d ""D:Program Files (x86)" -z "%1" " /f // 强制添加windbg打开dump⽂件到右键菜单的注册表项

(不指明/v,键值将写⼊默认值名中)

例:reg add "HKCR*shellWinHexcommand" /t REG_SZ /d ""D:" "%1" " /f // 强制添加winhex到右键菜单的注册表项(不指明/v,键

值将写⼊默认值名中)

注册表中%1 %2 %3 %4的含义:

-- %1表⽰⽂件列表,%2表⽰默认打印机,%3表⽰驱动器,%4表⽰端⼝

例:reg add "HKCUSoftwareMicrosoftWindowsCurrentVersionInternet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f // 关闭IE代理服务器选项

例:reg add "hkcusoftwareSysinternalsProcess Monitor" /v EulaAccepted /t REG_DWORD /d 1 /f // ⼯具(Process Monitor为其属性⾯板上的描述名)添加

License同意

例:reg delete "HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun" /v MyApp /f // 强制删除值名的MyApp的注册表项

例:reg delete "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution " /f // 强制删除让任务栏⾥的任务管理器为灰⾊的注册表项

例:reg delete HKEY_CURRENT_USEREnvironment /v HTTP_proxy /f // 删除http代理

例:reg delete HKEY_CURRENT_USEREnvironment /v HTTPS_proxy /f // 删除https代理

例:reg copy "hkcusoftwaremicrosoftwinmine" "hkcusoftwaremicrosoftwinminebk" /s /f // 强制复制winmine下所有的⼦项与值到winminebk

例:reg export "hkcusoftwaremicrosoftwinmine" c: // 导出winmine下所有的⼦项与值到c:⽂件中

例:reg import c: // 导⼊c:⽂件到注册表中

例:reg query "HKLMSOFTWAREMicrosoftWindowsCurrentVersionApp " /s // 查询ie的安装路径

例:reg query /ve // 查询.dsw默认值

例:reg query HKEY_CURRENT_USERSoftwareTencentQQGameSYS /v GameDirectory // 查询QQGame安装路径

5. @#@

& 顺序执⾏多条命令,⽽不管命令是否执⾏成功

例:cd /d d:src& /o c: // 先将当前⼯作⽬录切换到d:src下,然后执⾏ /o c:命令

&& 顺序执⾏多条命令,当碰到执⾏出错的命令后将不执⾏后⾯的命令

例:find "ok" c: && echo 成功 // 如果找到了"ok"字样,就显⽰"成功",找不到就不显⽰

|| 顺序执⾏多条命令,当碰到执⾏正确的命令后将不执⾏后⾯的命令

例:find "ok" c: || echo 不成功 // 如果找不到"ok"字样,就显⽰"不成功",找到了就不显⽰

| 管道命令

例:dir *.* /s/a | find /c ".exe" // 先执⾏dir命令,然后对输出结果(stdout)执⾏find命令(输出当前⽂件夹及所有⼦⽂件夹⾥的.exe⽂件的个数)

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

> 将当前命令输出以覆盖的⽅式重定向

例:tasklist > // tasklist的输出结果(stdout)以覆盖的⽅式重定向到⽂件中(注:tasklist的输出结果就不会打印到屏幕上了)

例:tasklist 1> // 等同于:tasklist >

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

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

息)

例:dir bin 2> 1>&2 // 将输出结果(stdout)重定向到错误信息(stderr),然后将错误信息(stderr)以覆盖的⽅式重定向到中(注: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⽬录不存在时,会输出错误信息)

>> 将当前命令输出以追加的⽅式重定向

例:tasklist >> // tasklist的输出结果(stdout)以追加的⽅式重定向到⽂件中(注:tasklist的输出结果就不会打印到屏幕上了)

例:tasklist 1>> // 等同于:tasklist >>

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

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

息)

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

息) 注:与上条命令结果⼀致

< 从⽂件中获得输⼊信息,⽽不是从屏幕上,⼀般⽤于date time label等需要等待输⼊的命令

例:date < // 中的内容为2005-05-01

编号Handle说明

0stdin键盘输⼊

1stdout在命令提⽰窗⼝上打印输出结果(默认)

2stderr在命令提⽰窗⼝上打印错误信息(默认)

3-9undefined应⽤程序⾃⼰定义和指定

@ 命令修饰符 在执⾏命令前,不打印出该命令的内容

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

, 在某些特殊的情况下可以⽤来代替空格使⽤

例:dir,c: // 相当于:dir c:

; 当命令相同的时候,可以将不同的⽬标⽤;隔离开来但执⾏效果不变。如执⾏过程中发⽣错误则只返回错误报告但程序还是会继续执⾏

例:dir c:;d:;e: // 相当于顺序执⾏:dir c: dir d: dir e:

echo. // 输出⼀个"回车换⾏",空⽩⾏

echo off // 后续所有命令在执⾏前,不打印出命令的内容

echo on // 后续所有命令在执⾏前,打印出命令的内容

echo 123 // 输出123到终端屏幕

echo "Hello World" // 输出Hello World到终端屏幕

echo %errorlevel% // 每个命令运⾏结束,可以⽤这个命令⾏格式查看返回码;默认值为0,⼀般命令执⾏出错会设errorlevel1

echo test > // 输出test的字符串到当前⽬录中的⽂件中(以覆盖的⽅式)

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 ; // 清除所有搜索路径设置并指⽰只在当前⽬录中搜索

path d:xxx;%PATH% // d:xxx路径添加到path

---------------------------------------------------

set p=aa1bb1aa2bb2 // 设置变量p,并赋值为aa1bb1aa2bb2

echo %p% // 显⽰变量p代表的字符串,即aa1bb1aa2bb2

echo %p:~6% // 显⽰变量p中第6个字符以后的所有字符,即aa2bb2

echo %p:~6,3% // 显⽰第6个字符以后的3个字符,即aa2

echo %p:~0,3% // 显⽰前3个字符,即aa1

echo %p:~-2% // 显⽰最后⾯的2个字符,即b2

echo %p:~0,-2% // 显⽰除了最后2个字符以外的其它字符,即aa1bb1aa2b

echo %p:aa=c% // c替换变量p中所有的aa,即显⽰c1bb1c2bb2

echo %p:aa=% // 将变量p中的所有aa字符串置换为空,即显⽰1bb12bb2

echo %p:*bb=c% // 第⼀个bb及其之前的所有字符被替换为c,即显⽰c1aa2bb2

set p=%p:*bb=c% // 设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2

set /a p=39 // 设置p为数值型变量,值为39

set /a p=39/10 // ⽀持运算符,有⼩数时⽤去尾法,39/10=3.9,去尾得3p=3

set /a p=p/10 // /a 参数时,在 = 后⾯的变量可以不加%直接引⽤

set /a p="1&0" // &运算要加引号。其它⽀持的运算符参见set/?

---------------------------------------------------

cls 清除屏幕

ver 显⽰当前windows系统的版本号

winver 弹框显⽰当前windows系统信息

hostname 显⽰当前机器名

例:hostname // ninizhang-pc5

vol 显⽰当前分区的卷标

label 显⽰当前分区的卷标,同时提⽰输⼊新卷标

label c:system 设置c盘的卷标为system

time 显⽰或设置当前时间

例:time /t // 显⽰当前时间

例:time // 设置新的当前时间(格式:hh:mm:ss),直接回车则表⽰放弃设置

date 显⽰或设置当前⽇期

例:date /t // 显⽰当前⽇期

例:date // 设置新的当前⽇期(格式:YYYY/MM/DD),直接回车则表⽰放弃设置

title 正在做命令⾏测试 // 修改当前cmd窗⼝的标题栏⽂字为正在做命令⾏测试

prompt orz: // 将命令提⽰符修改为orz:

print // 使⽤设置好的打印机来打印⽂本⽂件

call // 调⽤执⾏脚本(脚本执⾏完原脚本才会往下执⾏)

start 运⾏某程序或命令

例:start /max // 最⼤化的⽅式启动记事本

例:start /min // 最⼩化的⽅式启动计算器

例:start /min "" d: // 最⼩化的⽅式启动Proxifier代理⼯具

例:start tasklist // 启动⼀个cmd实例窗⼝,并运⾏tasklist

例:start explorer f: // 调⽤资源管理器打开f

例:strat iexplore "" // 启动ie并打开⽹址

例:start // 启动开始执⾏(启动脚本后,原脚本继续执⾏,不会等脚本执⾏完)

exit 退出当前cmd窗⼝实例

例:exit 0 // 退出当前cmd窗⼝实例,并将过程退出代码设置为00表⽰成功,⾮0表⽰失败)

例:exit /B 1 // 退出当前bat脚本,并将ERRORLEVEL系统变量设置为1

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

color 设置当前cmd窗⼝背景⾊和前景⾊(前景⾊即为字体的颜⾊)

例:color // 恢复到缺省设置

例:color 02 // 将背景⾊设为⿊⾊,将字体设为绿⾊

--------------------------------------

0 = ⿊⾊ 8 = 灰⾊

1 = 蓝⾊ 9 = 淡蓝⾊

2 = 绿⾊ A = 淡绿⾊

3 = 浅绿⾊ B = 淡浅绿⾊

4 = 红⾊ C = 淡红⾊

5 = 紫⾊ D = 淡紫⾊

6 = 黄⾊ E = 淡黄⾊

7 = ⽩⾊ F = 亮⽩⾊

--------------------------------------

mode con cols=200 lines=60 & color 9f 设置DOS窗⼝颜⾊为9f,⼤⼩:200 60列(若屏幕缓冲区⼤⼩的宽度w<200或⾼度h<60,最终DOS的窗⼝就会为w⾏,h列)

chcp 查看命令⾏环境字符编码(为⼀个全局设置)

936 -- GBK(⼀般情况下为默认编码)

437 -- 美国英语

65001 -- utf-8

1200 -- utf-16

1201 -- utf-16(Big-Endian)

12000 -- utf-32

12001 -- utf-32(Big-Endian)

注:cmd的属性窗⼝,选项标签页也可以查看当前代码页

chcp 936 // 设置当前命令⾏环境编码为GBK 执⾏完该命令后还需要将字体设置为点阵字体,才能真正将编码环境切成utf8

chcp 65001 // 设置当前命令⾏环境编码为utf8 执⾏完该命令后还需要将字体设置为Lucida Console,才能真正将编码环境切成utf8

在注册表中会写⼊这些字段信息:

systeminfo 查看当前计算机的综合信息

systeminfo | findstr /i "初始安装⽇期 系统启动时间" 只查看当前计算机的初始安装⽇期和系统启动时间

wmic 查看硬件的信息 -- C:

例:wmic logicaldisk // 查看计算机上各个盘的相关信息

例:wmic LogicalDisk where "Caption='C:'" get FreeSpace,Size /value // 获取C盘的剩余空间⼤⼩与总⼤⼩(单位:Byte

例:wmic os get Caption,InstallDate,OSArchitecture /value // 获取当前osCaption、安装⽇期以及系统架构信息

wmic 查看进程信息

例:wmic process where Caption="" get commandline,ExecutablePath,ProcessId,ThreadCount /value // 查看名为""所有进程命令⾏,exe全路径,PID

线程数

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

例:wmic process where Caption="" get ExecutablePath,VirtualSize,WorkingSetSize /value // 查看名为""所有进程的exe全路径、当前虚拟地址空间占

⽤及物理内存⼯作集

logoff 注销当前⽤户

shutdown 关闭、重启、注销、休眠计算机

例:shutdown /s // 关闭计算机

例:shutdown /s /t 3600 // ⼀⼩时后,关闭本地计算机

例:shutdown /a // 终⽌系统关闭

例:shutdown /r // 关闭并重启本地计算机

例:shutdown /m 192.168.1.166 /r // 关闭并重启ip192.168.1.166的计算机

+++++++++++++++++++++

远程关机权限的获取:

1)修改远程pc本地安全策略,为指定的⽤户开放权限

WindowsXP默认的安全策略中,只有Administrators组的⽤户才有权从远端关闭计算机,如果要给xxxx⽤户远程关机的权限。

可利⽤WindowsXP组策略管理⼯具中的本地安全策略来实现。

1.命令⾏运⾏打开组策略编辑器

2.导航到计算机配置/Windows设置/安全设置/本地策略/⽤户权利指派

3.修改从远端系统强制关机,添加xxxx⽤户即可。

2)获得远程IPC管理权限

如果配置第⼀步后还出现拒绝访问。,则需要在运⾏shutdown命令前先运⾏如下命令

net use [ip地址或计算机名]ipc$ password /user:xxxx

其中password为帐号xxxx的登录密码。

+++++++++++++++++++++

例:shutdown /g // 关闭并重启计算机,重启后重新启动所有注册的应⽤程序

例:shutdown /l // 注销本地计算机

例:shutdown /h /f // 休眠本地计算机(强制正在运⾏的应⽤程序关闭,不前台警告⽤户)

例:shutdown /s // 关闭计算机

regsvr32 注册或反注册com组件

例:regsvr32 /s // 以⽆声的⽅式注册组件

例:regsvr32 /u // 卸载组件

format 格式化磁盘

例:format J: /FS:ntfs // ntfs类型格式化J 【类型有:FATFAT32exFATNTFSUDF

例:format J: /FS:fat32 /Q // fat32类型快速格式化J

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

subst 磁盘映射 -- 磁盘映射信息都保存在注册表以下键值中:HKEY_CURRENT_USERNetwork

例:subst // 显⽰⽬前所有的映射

例:subst z: comsoftware // comsoftware共享映射为本地z

例:subst y: e:src // e:src映射为本地y

例:subst z: /d // 删除z盘映射

cmdkey 凭据Credential(保存的⽤户名和密码)

例:cmdkey /list // 列出可⽤的凭据

例:cmdkey /list:10.12.190.82 // 列出指定⽬标的凭据

例:cmdkey /list:Domain:target=10.12.190.82 // 列出指定⽬标的凭据

例:cmdkey /add:Domain:target=10.12.190.82 /user:LiLei /pass:123456 // target10.12.190.82的凭据不存在,则添加;否则就将10.12.190.82凭据的⽤户名修改为LiLei,密码

修改为123456

例:cmdkey /delete:Domain:target=10.12.190.82 // 删除指定⽬标的凭据

cscript 执⾏vbs脚本

例:cscript /Nologo // 执⾏脚本,显⽰本机mac地址

-----------------

Dim mc,mo

Set mc=GetObject("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")

For Each mo In mc

If led=True Then

MsgBox "本机⽹卡MAC地址是: " & ress

Exit For

End If

Next

--------------------------

powercfg 设置电源⽅案

例:powercfg -list // 列出当前⽤户环境中的所有电源⽅案的GUID以及当前使⽤的是哪⼀个电源⽅案

例:powercfg -query 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c // 查询GUID8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c的电源⽅案的详细内容

例:powercfg -h off // 设置禁⽌休眠

// 设置硬盘从不关闭

powercfg -change -disk-timeout-dc 0

powercfg -change -disk-timeout-ac 0

// 设置显⽰器从不关闭

powercfg -change -monitor-timeout-dc 0

powercfg -change -monitor-timeout-ac 0

// 设置从不进⼊待机

powercfg -change -standby-timeout-dc 0

powercfg -change -standby-timeout-ac 0

// 设置从不进⼊休眠

powercfg -change -hibernate-timeout-dc 0

powercfg -change -hibernate-timeout-ac 0

1dc代表直流电源 即使⽤电池供电;ac代表交流电源 即直接连接电源

2:后⾯数字为时间,单位为分钟;设置为0表⽰从不

netsh advfirewall 设置防⽕墙

windows防⽕墙规则顺序:阻⽌规则的优先级⾼于允许规则

例:netsh advfirewall export "d:" // 将防⽕墙当前的所有配置导出到d:⽂件

例:netsh advfirewall import "d:" // d:⽂件中规则导⼊到防⽕墙中

例:netsh advfirewall reset // 将防⽕墙还原为默认策略

例:netsh advfirewall set allprofiles state off // 关闭所有类型⽹络的防⽕墙(域⽹络【Domain】、家庭或⼯作的专⽤⽹络【Private】、公⽤⽹络都关闭【Public】)

例:netsh advfirewall set allprofiles state on // 开启所有类型⽹络的防⽕墙

例:netsh advfirewall set currentprofile state off // 关闭当前类型⽹络的防⽕墙

例:netsh advfirewall set currentprofile state on // 开启当前类型⽹络的防⽕墙

例:netsh advfirewall set domainprofile state on // 开启域⽹络的防⽕墙

例:netsh advfirewall set domainprofile state off // 关闭域⽹络的防⽕墙

例:netsh advfirewall set privateprofile state on // 开启家庭或⼯作的专⽤⽹络的防⽕墙

例:netsh advfirewall set privateprofile state off // 关闭家庭或⼯作的专⽤⽹络的防⽕墙

例:netsh advfirewall set publicprofile state on // 开启公⽤⽹络的防⽕墙

例:netsh advfirewall set publicprofile state off // 关闭公⽤⽹络的防⽕墙

例:netsh advfirewall firewall show rule name=all // 显⽰所有规则

例:netsh advfirewall firewall show rule name=foxmail // 显⽰名为foxmail的所有规则

例:netsh advfirewall firewall set rule name="⽂件和打印机共享(回显请求 - ICMPv4-In)" new enable=yes // 开启ping回显

例:netsh advfirewall firewall delete rule name=NiZhanBrowser // 删除所有名为NiZhanBrowser的规则

例:netsh advfirewall firewall delete rule name=NiZhanBrowser dir=in // 删除所有名为NiZhanBrowser的⼊站规则

例:netsh advfirewall firewall delete rule name=NiZhanBrowser action=block // 删除所有名为NiZhanBrowser且操作为阻⽌的规则

例:netsh advfirewall firewall add rule name=TCP-In-8888 protocol=TCP localport=8888 dir=in action=allow // 添加名为TCP-In-8888⼊站规则:允许TCP端⼝8888

例:netsh advfirewall firewall add rule name=TCP-In-8888 protocol=TCP localport=8888 dir=in action=block // 添加名为TCP-In-8888⼊站规则:阻⽌TCP端⼝8888

例:netsh advfirewall firewall add rule name=TCP-In-8888 protocol=TCP localport=8888 dir=out action=allow // 添加名为TCP-In-8888出站规则:允许TCP端⼝8888

例:netsh advfirewall firewall add rule name=TCP-In-8888 protocol=TCP localport=8888 dir=out action=block // 添加名为TCP-In-8888出站规则:阻⽌TCP端⼝8888

// 添加名为test1⼊站规则:允许TCP端⼝8888、远程IP地址在10.96.208.0/23,10.96.154.0/23区间、远程Port1024-2048,2050-65535

例:netsh advfirewall firewall add rule name=test1 protocol=TCP localport=8888 remoteip=10.96.208.0/23,10.96.154.0/23 remoteport=1024-2048,2050-65535

dir=in action=allow

// 添加名为test2⼊站规则:允许TCP端⼝8888、本地IP地址在10.46.50.32、本地Port3702

例:netsh advfirewall firewall add rule name=test2 protocol=TCP localport=8888 localip=10.46.50.32 localport=3702 dir=in action=allow

// 添加名为test3⼊站规则:允许TCP端⼝8888、程序路径为:D:

例:netsh advfirewall firewall add rule name=test2 protocol=TCP localport=8888 program="D:" dir=in action=allow

注:netsh advfirewall firewall add rule ? // 可⽤来查看帮助信息

netsh winsock reset // 重置socket

schtasks 任务计划

例:schtasks /query /fo LIST /v // 以较为详细易于阅读的格式显⽰本机所有任务计划信息

例:schtasks /create /sc minute /mo 20 /tn "Soda Build" /tr d: // 创建⼀个名为Soda Build的任务计划:该任务计划每20分钟执⾏⼀下d:脚本

例:schtasks /create /tn "Soda Build" /tr D: /sc daily /st 02:06 /f // 强制创建⼀个名为Soda Build的任务计划(不进⾏确认):该任务计划每天凌晨206分执⾏⼀下

D:脚本

例:schtasks /delete /tn "Soda Build" /f // 强制删除Soda Build名称的任务计划(不进⾏确认)

例:schtasks /change /tn "Soda Build" /tr d: // 将名为Soda Build的任务计划的执⾏脚本修改为d:

例:schtasks /run /tn "Soda Build" // 执⾏名为Soda Build的任务计划

例:schtasks /end /tn "Soda Build" // 终⽌执⾏名为Soda Build的任务计划

6. net命令

net start // 查看已经启动的服务

net start "Task Scheduler" // 开启任务计划服务

net stop "Task Scheduler" /y // 不询问,直接关闭任务计划服务

net start dnscache // 开启dns缓存服务

net stop dnscache /y // 不询问,直接关闭dns缓存服务

net start TermService // 开启Remote Desktop Services服务

net stop TermService /y // 不询问,直接关闭Remote Desktop Services服务

net share // 查看当前⽤户下的共享⽬录

net share workFile /delete // 取消名为workFile的共享状态

net share xxx=c:360Downloads // c:360Downloads设为共享,并取名为xxx

net share ipc$ // 开启ipc$共享

net share ipc$ /del // 删除ipc$共享

net share c$ /del // 删除c盘共享

net use 192.168.1.166ipc$ " " /user:" " // 建⽴192.168.1.166ipc空链接

net use 192.168.1.166ipc$ "123456" /user:"administrator" // 直接登陆后建⽴192.168.1.166ipc⾮空链接(⽤户名为administrator 密码为123456

net use h: 192.168.1.166c$ "123456" /user:"administrator" // 直接登陆后映射192.168.1.166c盘到本地为h盘(⽤户名为administrator 密码为123456

net use h: 192.168.1.166c$ // 登陆后映射192.168.1.166c盘到本地为h

net use 192.168.1.166ipc$ /del // 删除ipc链接

net use h: /del // 删除本地的h盘的映射

net view // 查看本地局域⽹内开启了哪些共享

net view 192.168.1.166 // 查看192.168.1.166的机器上在局域⽹内开启了哪些共享

net time 127.0.0.1 // 查看本地机器的⽇期及时间

net time localhost // 查看本地机器的⽇期及时间

net time 192.168.1.166 // 查看192.168.1.166机器的⽇期及时间

net time 192.168.1.166 /set // 设置本地计算机时间与192.168.1.166主机的时间同步,加上参数/yes可取消确认信息

net user // 查看当前机器上的⽤户

net user Administrator // 查看当前机器上的Administrator⽤户的信息

net user Guest /active:yes // 启⽤Guest⽤户

net user dev 123456 /add // 新建⼀个名为dev,密码为123456的⽤户

net localgroup administrators dev /add // 把名为dev的⽤户添加到管理员⽤户组中,使其具有管理员权限

net user dev /del // 删除名为dev的⽤户

7. 进程操作

tasklist // 显⽰当前运⾏的进程信息(可查看PID

taskkill 结束指定的进程

例:taskkill /im // 结束名为的进程

例:taskkill /pid 1230 /pid 1241 /pid 1253 /t // 结束pid123012411253的进程以及由它们启动起来的⼦进程

例:taskkill /f /im /t // 强制结束有名为的进程以及由它启动起来的⼦进程

8. ⽹络操作

ping // ⽤于检测⽹络是否通畅,以及⽹络时延情况(⼯作在ICMP协议上)

例:ping // 测试与baidu服务器的连接情况

例:ping chen-pc0 // 测试机器名为chen-pc0的连接情况

例:ping 220.181.111.86 // 测试与ip220.181.111.86的连接情况

例:ping -l 65500 -n 10 // 发送1065500字节的ping

例:ping -n 6 127.0.0.1 // 对当前主机执⾏6ping操作(花费时间为5s

例:ping -t // 不断地测试baidu服务器的连接情况 Ctrl+Pause Break:查看ping的统计信息;Ctrl+C:终⽌当前任务

a. ⾸先查本地arp cache信息,看是否有对⽅的mac地址和IP地址映射条⽬记录

b. 如果没有,则发起⼀个arp请求⼴播包,等待对⽅告知具体的mac地址

c. 收到arp响应包之后,获得某个IP对应的具体mac地址,有了物理地址之后才可以开始通信了,同时对ip-mac地址做⼀个本地cache

d. 发出icmp echo request包,收到icmp echo reply

注:如果在同⼀⽹段但ping不通⽬标主机,可能是⽬标主机禁⽤了ping,可在防⽕墙⾼级设置中打开⼊站规则” -- “⽂件和打印机共享(回显请求 - ICMPv4-In)

ipconfig /all // 查看本地ip地址等详细信息

ipconfig /displaydns // 显⽰本地dns缓存的内容

ipconfig /flushdns // 清除本地dns缓存的内容

nslookup // 获取的域名解析

服务器: //DNS服务器的主机名

Address: 10.6.18.41//DNS服务器IP

⾮权威应答:

名称: //解析的域名URL

Address: 42.121.252.58//解析回的IP

nslookup -d // 打印出的域名解析所有记录

netstat -a // 查看开启了哪些端⼝

netstat -n // 查看端⼝的⽹络连接情况

netstat -v // 查看正在进⾏的⼯作

netstat -p tcp // 查看tcp协议的使⽤情况

tracert 182.140.167.44 // 查看本机到达182.140.167.44的路由路径

route print // 显⽰出IP路由

telnet 182.140.167.44 8000 // 探测182.140.167.44是否使⽤TCP协议监听8000端⼝(注意:telnet命令不⽀持UDP端⼝检测)

说明:如果端⼝关闭或者⽆法连接,则显⽰不能打开到主机的链接,链接失败;端⼝打开的情况下,链接成功,则进⼊telnet页⾯(全⿊的),证明端⼝可⽤。

⽤于探测指定IP的端⼝号,只是telnet的⼀个基本功能;

远程登录到⽹络中的计算机,并以命令⾏的⽅式远程管理计算机才是telnet命令的强⼤之处。

windows telnet服务器(默认端⼝:23)环境配置过程如下

a. 安装telnet服务器

b. 启动Telnet服务

c. 关闭windows防⽕墙 注:若不想关闭防⽕墙,则需要在Windows防⽕墙 -- ⾼级设置⾥⾯对Telnet服务器的访问规则进⾏配置

ftp 46.19.34.198 21 // 连接46.19.34.198 ftp服务器(21为端⼝号),然后会要求输⼊⽤户名与密码;连接成功后,具体如何使⽤可以键⼊?来查看帮助说明

arp 显⽰和修改地址解析协议(ARP)使⽤的“IPmac”的地址转换表

例:arp -a // 显⽰arp缓存表

at 计划任务(必须保证“Task Scheduler”服务启动 net start "task scheduler"

例:at // 查看所有的计划任务

例:at /delete /yes // 停⽌所有任务计划(不需要确认)

例:at 1 // 开启id1的计划任务

例:at 1 /delete /yes // 停⽌id1的计划任务(不需要确认)

例:at 12:42 shutdown –s –t30 // 12:42 ,电脑会出现系统关机对话框,并默认 30 秒延时⾃动关机

例:at cmd /c dir > c: // 如果命令不是exe⽂件,必须在命令前加上cmd /c

例:at 6:00AM /every:Saturday // 在每周六早上6点,电脑定时启动批处理⽂件

例:at chen 12:00 shutdown /r // 12:00时,关闭名为chen的计算机

例:at 192.168.1.166 12:00 shutdown /r // 12:00时,关闭ip192.168.1.166的计算机

9. ⽂本处理

edit // 编辑⽂件(会进⼊edit字符编辑器;按alt,可以选择对应的菜单) win7 x64下没有该命令

find ⽂件中搜索字符串

例:find /N /I "pid" // ⽂件中忽略⼤⼩写查找pid字符串,并带⾏号显⽰查找后的结果

例:find /C "exe" // 只显⽰在⽂件中查找到exe字符串的次数

例:find /V "exe" // 显⽰未包含⽂件中未包含exe字符串的⾏

findstr ⽂件中搜索字符串

例:findstr "hello world" // ⽂件中搜索helloworld

例:findstr /c:"hello world" // ⽂件中搜索hello world

例:findstr /c:"hello world" nul // ⽂件中搜索hello world,并在每⾏结果前打印出: 注:findstr只有在2个及以上⽂件中搜索字符串时才会打印出每个⽂件的⽂件

名,nul表⽰⼀个空⽂件

例:findstr /s /i "Hello" *.* // 不区分⼤⼩写,在当前⽬录和所有⼦⽬录中的所有⽂件中的hello

例:findstr "^[0-9][a-z]" // 中搜索以1个数字+1个⼩写字母开头⼦串的⾏