简述
NirCmd是一款命令行使用小工具,通过它可以完成很多实用的任务,而不用显示任何用户界面。通过添加一些非常简单的命令选项,可以完成:写入、删除 注册表项、值,写入ini文件,拨号连接到的网络账户以及VPN网络,重启、关闭计算机,创建文件快捷方式,改变文件的创建/修改日期,改变显示设置, 关闭显示器,弹出光驱,以及更多….

许可
这是一款免费软件。只要不从此中收取费用,就可以自由的通过软盘,CD,网络或者其他方法发布。注意在发布时应包含此发布包内的所有文件,不得有任何修改。

使用NirCmd
这款软件是一个独立的可执行程序,不需要任何的安装过程或者额外的dll文件支持。只需要把exe文件复制到任何指定的文件夹,并且根据的需要添加需 要的命令选项运行即可。推荐复制NirCmd.exe到Windows目录,或者复制到任何系统中path环境变量中所列出的路径下,这样就不需要在每 次运行时输入NirCmd的完整路径。
从版本1.50开始,NirCmd的也可以在控制台中使用,在控制台版本中,所有的错误信息都会显示在控制台窗口中,而不是出现在信息框中
此实用工具可以在所有32位Windows操作系统:Windows 9x/ME,Windows NT ,Windows 2000, Windows XP,Windows Server 2003和Windows Vista。不过,一些NirCmd命令只能用在Windows NT/2000/XP/2003/Vista 。

可以用NirCmd做什么

弹出盘符为J的光驱nircmd.exe cdrom open j:
弹入盘符为Y的光驱nircmd.exe cdrom close y:
读出剪贴板文本内容 (仅Windows XP和Vista).speak text ~$clipboard$
增加2000个单位的系统音量(最大65535)nircmd.exe changesysvolume 2000
降低5000个单位的系统音量(最大65535)nircmd.exe changesysvolume -5000
设置为最高音量nircmd.exe setsysvolume 65535
设置为静音nircmd.exe mutesysvolume 1
取消静音nircmd.exe mutesysvolume 0
在静音与正常状态之间切换nircmd.exe mutesysvolume 2
在桌面创建静音与正常状态切换命令的快捷方式nircmd.exe cmdshortcut "~$folder.desktop$" "Switch Volume" mutesysvolume 2
关闭显示器nircmd.exe monitor off
启动默认屏保nircmd.exe screensaver
进入待机状态nircmd.exe standby
注销当前用户nircmd.exe exitwin logoff
弹出对话框,询问是否重启。选择是则重启电脑nircmd.exe qboxcom "Do you want to reboot ?" "question" exitwin reboot
关闭计算机nircmd.exe exitwin poweroff
关闭computers.txt中指定的所有计算机multiremote copy "c:tempcomputers.txt" exitwin poweroff force
拨号宽带连接nircmd.exe rasdial "My Internet"
断开宽带连接nircmd.exe rashangup "My Internet"
设置IE窗口为75%透明度(192/256)nircmd.exe win trans ititle "internet explorer" 192
最小化所有的IE窗口nircmd.exe win min class "IEFrame"
关闭所有的IE窗口nircmd.exe win close class "IEFrame"
关闭所有的资源管理器窗口(我的电脑、文件夹等)nircmd.exe win close class "CabinetWClass"
隐藏所有的IE窗口nircmd.exe win hide class "IEFrame"
显示所有的IE窗口(在用上面命令隐藏后)nircmd.exe win show class "IEFrame"
把所有的顶级窗口居中nircmd.exe win center alltop
去掉我的电脑窗口的标题栏nircmd.exe win -style title "my computer" 0x00C00000
恢复我的电脑窗口的标题栏(当用上面命令去除后)nircmd.exe win +style title "my computer" 0x00C00000
设置我的电脑窗口为从右至左的顺序(适用于希伯来语和阿拉伯语)nircmd win +exstyle title "my computer" 0x00400000
设置我的电脑窗口的所有子窗口为从右至左的顺序(适用同上)nircmd win child title "my computer" +exstyle all 0x00400000
在桌面创建可以关闭所有IE窗口的快捷方式nircmd.exe cmdshortcut " "~$folder.desktop$ "Close All IE" win close class "IEFrame"
在桌面创建可以隐藏所有IE窗口的快捷方式nircmd.exe cmdshortcut " "~$folder.desktop$ "Hide All IE" win hide class "IEFrame"
在桌面创建可以再次显示所有IE窗口的快捷方式nircmd.exe cmdshortcut " "~$folder.desktop$ "Show All IE" win show class "IEFrame"
把calculator窗口设置为最上层窗口(在其他窗口之上)nircmd.exe win settopmost title "Calculator" 1
恢复calculator窗口为原始窗口状态(不处于最上层)nircmd.exe win settopmost title "Calculator" 0
创建calc.exe快捷方式到开始菜单->程序->Calculatorsnircmd.exe shortcut "f:winntsystem32calc.exe" "~$folder.programs$Calculators" "Windows Calculator"
隐藏桌面所有图标nircmd.exe win hide class progman
显示桌面所有图标(用以上命令隐藏过后)nircmd.exe win show class progman
隐藏系统开始按钮nircmd.exe win child class "Shell_TrayWnd" hide class "button"
显示系统开始按钮nircmd.exe win child class "Shell_TrayWnd" show class "button"
隐藏系统时间nircmd.exe win child class "Shell_TrayWnd" hide class "TrayClockWClass"
显示系统时间nircmd.exe win child class "Shell_TrayWnd" show class "TrayClockWClass"
终止所有IE实例nircmd.exe killprocess iexplore.exe
创建桌面快捷方式,运行即可弹出光驱(K盘)nircmd.exe cmdshortcut "~$folder.desktop$" "Open CDROM" cdrom open k:
将nirsoft网址创建到桌面快捷方式nircmd.exe urlshortcut "http://www.nirsoft.net" "~$folder.desktop$" "NirSoft"
添加nirsoft网址到收藏夹链接下nircmd.exe urlshortcut "http://www.nirsoft.net" "~$folder.favorites$Links" "NirSoft"
将nirsoft网址快捷方式创建到computers.txt中列出的所有计算机的桌面nircmd.exe multiremote copy "c:tempcomputers.txt" urlshortcut "http://www.nirsoft.net" "~$folder.common_desktop$" "NirSoft"
设置显示模式为800X600,24位色nircmd.exe setdisplay 800 600 24
将设置显示模式为800X600,24位色命令创建为桌面快捷方式nircmd.exe cmdshortcut "~$folder.desktop$" &quot800x600x24" setdisplay 800 600 24
复制所有桌面快捷方式到其他文件夹(f:tempdesktop)nircmd.exe execmd copy "~$folder.desktop$*.lnk" f:tempdesktop
重启的Apache server服务器(windows NT/2000/XP/2003)nircmd.exe service restart apache
将重启Apache server服务器命令创建为桌面快捷方式nircmd.exe cmdshortcut "~$folder.desktop$" "Restart Apache" service restart apache
重启IIS(互联网信息服务)nircmd.exe service restart w3svc
重启MySqlnircmd.exe service restart MySql
打开指定注册表项/值nircmd.exe regedit "HKLMSoftwareMicrosoftWindowsCurrentVersion" "CommonFilesDir"
打开在注册表编辑器中复制到剪切板的注册表项nircmd regedit "~$clipboard$"
禁用屏保nircmd.exe regsetval sz "HKCUcontrol paneldesktop" "ScreenSaveActive" 0
取消禁用屏保nircmd.exe regsetval sz "HKCUcontrol paneldesktop" "ScreenSaveActive" 1
改变指定文件的日期/时间(创建时间和修改时间)nircmd.exe setfiletime "c:tempmyfile.txt" "24-06-2003 17:57:11" "22-11-2005 10:21:56"
复制桌面所在路径到剪切板nircmd.exe clipboard set ~$folder.desktop$
复制开始菜单文件夹路径到剪切板nircmd.exe clipboard set ~$folder.start_menu$
复制文本info1.txt中的内容到剪切板nircmd.exe clipboard readfile "c:My Filesinfo1.txt"
将剪切板中内容添加到文本info1.txt中nircmd.exe clipboard addfile "c:My Filesinfo1.txt"
清空剪切板nircmd.exe clipboard clear
创建所有在"c:tempfolders.txt"中指定的文件夹,文件夹路径名用回车符隔开nircmd.exe paramsfile "c:tempfolders.txt" "" "" execmd md ~$fparam.1$
安装所有在全局程序集缓存(GAC)中指定的.NET程序集nircmd.exe gac install "C:tempMyAssemblybinMyAssembly.dll"
清空所有磁盘上的回收站nircmd.exe emptybin
对一个标准的Windows信息框回复确认nircmd.exe dlg "" "" click yes
延迟2秒钟,然后保存当前屏幕截图到shot.pngnircmd.exe cmdwait 2000 savescreenshot "f:tempshot.png"
循环保存十个截图,截图间隔60秒,文件名包含时间和日期。nircmd.exe loop 10 60000 savescreenshot c:tempscr~%currdate.MM_dd_yyyy%-~%currtime.HH_mm_ss%.png
等待Fixfox关闭,读出 "Firefox was closed"(火狐已经关闭)waitprocess firefox.exe speak text "Firefox was closed"

NirCmd的一般语法
nircmd.exe {showerror}[command][command parameters]
showerror
是可选参数。如果指定了此参数,那么在命令运行过程中如果发生错误,错误信息会显示在屏幕上。否则,会忽略所有错误例:
nircmd.exe showerror rasdial "dial1"
nircmd.exe rasdial "dial1"
在上面的两个例子中,NirCmd会尝试连接diall入口,在第一个例子中,如果连接失败,将会显示一条有关此问题的错误信息;在第二个例子中,如果连接失败则不会显示错误信息。

特殊的字符串序列
从版本1.20开始,NirCmd允许在命令参数中插入特殊的字符。下表列出了可以使用的特殊字符串序列:

序列描述
~n换行(包含换行符和回车符)
~q双引号 "
~t制表符 Tab键
~xnn用一个包含两位十六进制数字的ASCII来代表任何字符。例如:~x41 (字符'A'), ~x27 (单引号)
~$variable$代表系统变量,更多信息请看下面。
~~代表单个~字符


例:
NirCmd infobox "This is the first line~n~qThis is a second line, in quotes~q" "Example"
上面的例子会显示一个包含两行的信息框。

系统变量
从1.40版本开始,NirCmd提供了特殊字符代表文件夹以及其他系统变量。每个变量都以字符~开头,后面的变量名包含在两个$内。
例:~$folder.desktop$就代表了系统桌面这个文件夹的路径。(可以用nircmd infobox "~$folder.desktop"来查看)。
下表就指定了可以使用的一些变量:

变量名描述
clipboard代表复制到剪切板的文本内容
param.paramname当指定一个param变量时,屏幕上会显示一个输入窗口,要求为指定的参数输入文本(可以理解为给参数赋值),所输入的 文本会被插入到命令行中。例:在下面的命令中,会要求输入2个参数(1和2),所输入的文本会显示在信息框中。nircmd infobox ~$param.1$ ~$param.2$
fparam.number从指定的文本中加载指定的参数,更多信息请参考命令paramsfile
sys.varname可以使用此选项来表示系统上的任何环境变量。例: ~$sys.username$, ~$sys.windir$, ~$sys.computername$, ~$sys.logonserver$, ~$sys.temp$, 等等
nir.exefile当前运行的NirCmd的完整路径(如: c:winntnircmd.exe)
loopcount执行循环命令时指定循环次数
currtime.TimeFormat根据“TimeFormat”选择的时间格式指定当前时间。
如:~%currtime.HH_mm_ss%,如需对时间格式了解更多参考currtime(时间格式字符串)
currdate.DateFormat根据“DateFormat”选择的日期格式指定当前日期。
如:~%currdate.MM_dd_yyyy% ,如需对日期格式了解更多参考currdate(日期格式字符串)
folder.nircmdNirCmd所在的文件夹(路径)
folder.desktop用户桌面(路径)
folder.start_menu用户开始菜单文件夹(路径)
folder.programs用户开始菜单程序文件夹(路径)
folder.startup用户开始菜单程序启动文件夹(路径)
folder.recent用户开始菜单程序启动文件夹(路径)
folder.favorites用户收藏夹(路径)
folder.cookiescookies文件夹(路径)
folder.appdataApplication Data文件夹(路径)
folder.common_desktopAll user桌面文件夹(路径)
folder.common_start_menuALL user开始菜单文件夹(路径)
folder.common_programsALL user开始菜单程序文件夹(路径)
folder.common_startupALL user开始菜单程序启动文件夹(路径)
folder.common_favoritesALL user收藏夹(路径)
folder.windowsWindows文件夹(路径)
folder.system系统文件夹(路径)


例:
1、 创建开始菜单程序文件夹的快捷方式:
NirCmd shortcut "c:winntsystem32calc.exe" "~$folder.programs$My Programs" "Calculator"
2、 删除用户桌面的某个快捷方式:
NirCmd execmd del "~$folder.desktop$calc.lnk"
3、 显示当前已登录的用户:
NirCmd infobox "The current logged-on user is ~$sys.username$" "logged-on user"
4、 截图并用包含当前时间和日期的文件名进行保存
NirCmd savescreenshot c:tempscr~%currdate.MMddyyyy%-~%currtime.HHmmss%.png

currtime时间格式字符串
时间格式字符串中可能包含以下内容:(这些格式字符串需要区分大小写!)

h单数字小时;十二小时制
hh双数字小时;十二小时制
H单数字小时;二十四小时制
HH双数字小时;二十四小时制
m单数字分钟
mm双数字分钟
s单数字秒
ss双数字秒
t标记字符串的单个时间字符, 如A 或者P.
tt标记字符串的多时间字符, 如AM或者PM.

currdate日期格式字符串
日期格式字符串中可能包含以下内容:(这些格式字符串需要区分大小写!)

d月份中的单数字日期
dd月份中的双数字日期
ddd星期中的三位数日期缩写
dddd星期中的日期全称
M单数字月份
MM双数字月份
MMM三位数缩写月份
MMMM月份全称
y年份末尾数
yy年份末尾两位数
yyyy年份全称

在远程计算机上执行NirCmd命令
从1.40版本开始,可以在远程计算机上执行NirCmd命令。但是,应该注意以下的一些限制和问题:
1、此选项只可用于Windows NT,Windows 2000和Windows XP。不可以在Windows 9X下使用。
2、必须以管理员身份登陆远程计算机。
3、远程计算机上的任务计划(Task Schedule)服务必须开启。(默认所有的NT/2000/XP计算机都自动开启此服务,所以不用担心这点。)
4、由于任务计划服务的一些限制,必须等待60秒命令才可以在远程计算机上执行。
5、远程计算机上的命令是在system账户下执行,因此某些同样的命令在本地执行可能会有所区别。
这是两条在用于远程计算机上执行的NirCmd命令:
remote 用于在一台远程计算机上执行命令
multiremote 用于在多台远程计算机上执行命令

帮助
如果不记得确切的语法命令,随时可以查看帮助文件 NirCmd (NirCmd.chm) 或者可以使用帮助命令(help command)中提到的 http://nircmd.nirsoft.net/,例如: nircmd.exe help multiremote