简述
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快捷方式到开始菜单->程序->Calculators | nircmd.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$" "800x600x24" 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 |
重启MySql | nircmd.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.png | nircmd.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.nircmd | NirCmd所在的文件夹(路径) |
folder.desktop | 用户桌面(路径) |
folder.start_menu | 用户开始菜单文件夹(路径) |
folder.programs | 用户开始菜单程序文件夹(路径) |
folder.startup | 用户开始菜单程序启动文件夹(路径) |
folder.recent | 用户开始菜单程序启动文件夹(路径) |
folder.favorites | 用户收藏夹(路径) |
folder.cookies | cookies文件夹(路径) |
folder.appdata | Application Data文件夹(路径) |
folder.common_desktop | All user桌面文件夹(路径) |
folder.common_start_menu | ALL user开始菜单文件夹(路径) |
folder.common_programs | ALL user开始菜单程序文件夹(路径) |
folder.common_startup | ALL user开始菜单程序启动文件夹(路径) |
folder.common_favorites | ALL user收藏夹(路径) |
folder.windows | Windows文件夹(路径) |
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