NirCmd

NirCmd v1.80
Copyright (c) 2003 - 2005 Nir Sofer

Description

NirCmd is a small command-line utility that allows you to do some useful tasks without displaying any user interface. By running NirCmd with simple command-line option, you can write and delete values and keys in the Registry, write values into INI file, dial to your internet account or connect to a VPN network, restart windows or shut down the computer, create shortcut to a file, change the created/modified date of a file, change your display settings, turn off your monitor, open the door of your CD-ROM drive, and more...

Examples of what you can do with NirCmd

Open the door of J: CD-ROM drive | nircmd.exe cdrom open j:
Close the door of Y: CD-ROM drive | nircmd.exe cdrom close y:
Increase the system volume by 2000 units (out of 65535) | nircmd.exe changesysvolume 2000
Decrease the system volume by 5000 units (out of 65535) | nircmd.exe changesysvolume -5000
Set the volume to the highest value | nircmd.exe setsysvolume 65535
Mute the system volume | nircmd.exe mutesysvolume 1
Unmute the system volume | nircmd.exe mutesysvolume 0
Switch the system volume between the mute and normal state. | nircmd.exe mutesysvolume 2
Create a shortcut on your desktop that switch the system volume between the mute and normal state. | nircmd.exe cmdshortcut "~$folder.desktop$" "Switch Volume" mutesysvolume 2
Turn off the monitor | nircmd.exe monitor off
Start the default screen saver | nircmd.exe screensaver
Put your computer in 'standby' mode | nircmd.exe standby
log off the current user | nircmd.exe exitwin logoff
Ask if you want to reboot, and if you answer 'Yes', reboot the computer. | nircmd.exe qboxcom "Do you want to reboot ?" "question" exitwin reboot
Turn off your computer | nircmd.exe exitwin poweroff
Turn off all computers specified in computers.txt ! | multiremote copy "c:\temp\computers.txt" exitwin poweroff force
Dial to "My Internet" connection | nircmd.exe rasdial "My Internet"
Disconnect the "My Internet" connection | nircmd.exe rashangup "My Internet"
Make your Internet Explorer windows 75% transparent ! (192 / 256) | nircmd.exe win trans ititle "internet explorer" 192
Minimize all your Internet Explorer windows | nircmd.exe win min class "IEFrame"
Close all your Internet Explorer windows | nircmd.exe win close class "IEFrame"
Close all your Explorer windows (My Computer, folders, and so on) | nircmd.exe win close class "CabinetWClass"
Hide all your Internet Explorer windows | nircmd.exe win hide class "IEFrame"
Show all your Internet Explorer windows (after you made them hidden with previous example) | nircmd.exe win show class "IEFrame"
Center all top-level windows | nircmd.exe win center alltop
Remove the title bar of My Computer window. | nircmd.exe win -style title "my computer" 0x00C00000
Return the title bar of My Computer window that we removed in the previous example. | nircmd.exe win +style title "my computer" 0x00C00000
Set the My Computer window to right-to-left order (For hebrew and arabic languages) | nircmd win +exstyle title "my computer" 0x00400000
Set all child windows of My Computer window to right-to-left order (For hebrew and arabic languages) | nircmd win child title "my computer" +exstyle all 0x00400000
Create a shortcut on your desktop that closes all your Internet Explorer windows | nircmd.exe cmdshortcut " "~$folder.desktop$ "Close All IE" win close class "IEFrame"
Create a shortcut on your desktop that hides all your Internet Explorer windows | nircmd.exe cmdshortcut " "~$folder.desktop$ "Hide All IE" win hide class "IEFrame"
Create a shortcut on your desktop that shows back all your Internet Explorer windows | nircmd.exe cmdshortcut " "~$folder.desktop$ "Show All IE" win show class "IEFrame"
Set the Windows Calculator as top-most window (above all other windows) | nircmd.exe win settopmost title "Calculator" 1
Set the Windows Calculator back to regular window (non top-most window) | nircmd.exe win settopmost title "Calculator" 0
Create a shortcut to Windows calculator under Start Menu->Programs->Calculators | nircmd.exe shortcut "f:\winnt\system32\calc.exe" "~$folder.programs$\Calculators" "Windows Calculator"
Hide the desktop window | nircmd.exe win hide class progman
Show the desktop window (After hiding it in previous example) | nircmd.exe win show class progman
Hide the start button on the system tray | nircmd.exe win child class "Shell_TrayWnd" hide class "button"
Show the start button on the system tray | nircmd.exe win child class "Shell_TrayWnd" show class "button"
Hide the clock on the system tray | nircmd.exe win child class "Shell_TrayWnd" hide class "TrayClockWClass"
Show the clock on the system tray | nircmd.exe win child class "Shell_TrayWnd" show class "TrayClockWClass"
Kill (terminate) all instance of Internet Explorer processes | nircmd.exe killprocess iexplore.exe
Create a shortcut on your desktop that opens the door of K: CDROM drive when you run it. | nircmd.exe cmdshortcut "~$folder.desktop$" "Open CDROM" cdrom open k:
Create a shortcut to NirSoft Web site on your desktop | nircmd.exe urlshortcut "http://www.nirsoft.net" "~$folder.desktop$" "NirSoft"
Add NirSoft Web site to your Favorities under Links folder. | nircmd.exe urlshortcut "http://www.nirsoft.net" "~$folder.favorites$\Links" "NirSoft"
Create a shortcut to NirSoft Web site on the desktop of all computers listed in computers.txt | nircmd.exe multiremote copy "c:\temp\computers.txt" urlshortcut "http://www.nirsoft.net" "~$folder.common_desktop$" "NirSoft"
Set the display mode to 800x600x24bit colors | nircmd.exe setdisplay 800 600 24
Create a shortcut on the desktop that set the display mode to 800x600x24bit colors | nircmd.exe cmdshortcut "~$folder.desktop$" "800x600x24" setdisplay 800 600 24
Copy all shortcuts on your desktop to another folder (f:\temp\desktop). | nircmd.exe execmd copy "~$folder.desktop$\*.lnk" f:\temp\desktop
Restart your Apache server (under Windows NT/2000/XP/2003) | nircmd.exe service restart apache
Create a shortcut on your desktop that restarts the Apache server | nircmd.exe cmdshortcut "~$folder.desktop$" "Restart Apache" service restart apache
Restart your IIS | nircmd.exe service restart w3svc
Restart MySql | nircmd.exe service restart MySql
Open the desired Registry key/value in RegEdit | nircmd.exe regedit "HKLM\Software\Microsoft\Windows\CurrentVersion" "CommonFilesDir"
Open the Registry key that you copied to the clipboard in RegEdit. | nircmd regedit "~$clipboard$"
Disable the screen saver | nircmd.exe regsetval sz "HKCU\control panel\desktop" "ScreenSaveActive" 0
Enable the screen saver | nircmd.exe regsetval sz "HKCU\control panel\desktop" "ScreenSaveActive" 1
Change the date/time of the specified filename (creation time and modified time) | nircmd.exe setfiletime "c:\temp\myfile.txt" "24-06-2003 17:57:11" "22-11-2005 10:21:56"
Copy your desktop folder path to the clipboard | nircmd.exe clipboard set ~$folder.desktop$
Copy your start menu folder path to the clipboard | nircmd.exe clipboard set ~$folder.start_menu$
Copy the content of info1.txt (simple text file) to the clipboard | nircmd.exe clipboard readfile "c:\My Files\info1.txt"
Add the text content of clipboard to info1.txt | nircmd.exe clipboard addfile "c:\My Files\info1.txt"
Clear the clipboard | nircmd.exe clipboard clear
Create all folders specified in "c:\temp\folders.txt". The folder path names are separated by CRLF characters. | nircmd.exe paramsfile "c:\temp\folders.txt" "" "" execmd md ~$fparam.1$
Install the specified .NET assembly in the global assembly cache (like gacutil) | nircmd.exe gac install "C:\temp\MyAssembly\bin\MyAssembly.dll"

System Requirements

This utility can work in all 32-bit Windows operating systems: Windows 9x/ME, Windows NT, Windows 2000, and Windows XP. However, some of NirCmd commands works only on Windows NT/2000/XP.

Versions History

Date | Version | Description
24/09/20051.80
  • New commands: exec2, cmdwait.
  • New options in clipboard command.
  • Volume commands (setsysvolume, changesysvolume, setsysvolume2, changesysvolume2, mutesysvolume) now allows you to change the volume of non-default sound card.
07/07/20051.70
  • New win actions: activate, hideshow, +style, -style, +exstyle, -exstyle
  • New commands: movecursor, setcursor.
  • New command: setfilefoldertime - allows you to change the date/time of folders, under Windows 2000/XP only.
10/06/20051.62
  • New actions in win command: focus, enable, disable
26/05/20051.61
  • new command: sysrefresh - make a general system refresh after modifying your system settings in the Registry.
07/05/20051.60
  • New paramsfile command: Allows you to execute a command multiple times by loading the parameters from a text file.
  • New actions in win command: move, center, settext.
  • New 'child' action in win command: Allows you to move/hide child windows (For example: the start button in the system tray)
  • New clipboard command: Allows you to put a string in the clipboard, and clear the clipboard.
  • New gac command: Allows you to install assemblies in Global Assembly Cache.
28/12/20041.56
  • New variable: ~$clipboard$ - paste the text that you copied to the clipboard into the command-line.
  • Parameter variables: ~$param.ParamName$ - Display an input window for typing the text that you want insert into the command-line.
07/12/2004 | 1.55 | Added RegEdit command.
18/11/20041.54
  • On reg commands (regsetval, regdelval, regdelkey), you can now also use the following abbreviated key name: HKCU for HKEY_CURRENT_USER, HKLM for HKEY_LOCAL_MACHINE, HKCR for HKEY_CLASSES_ROOT, HKU for HKEY_USERS, HKCC for HKEY_CURRENT_CONFIG.
  • redraw action for win command.
03/11/2004 | 1.53 | Fixed 'monitor off' problem in XP SP2.
09/10/2004 | 1.52 | rasapi32.dll is now loaded only when using the dial commands (rasdial, rasdialdlg, rashangup). In previous versions, NirCmd was statically linked to rasapi32.dll, and that caused problems in old NT systems.
29/09/20041.51 Variable names are now enclosed with '$' char instead of '%' char.
I made this change because the '%' char causes problems when running NirCmd from cmd/bat file. using the '%' char for variable names is still supported for backward compatibility.
22/09/20041.50
  • New commands: cmdshortcut, regsvr, mutesysvolume, changesysvolume, changesysvolume2, setsysvolume2.
  • New actions in win command: trans, setsize, settopmost, ititle.
  • New variables: folder.nircmd, nir.exefile
  • nircmdc.exe - console version of NirCmd.
  • Changed name - from NirComLime to NirCmd.
05/05/20041.40
  • New commands: wait, setvolume, setsysvolume, execmd, exec.
  • New commands for executing NirCmd on remote machines: remote and multiremote.
  • Folder and system variables.
  • New option in setfiletime command - set the file time to the current time (now parameter)
  • New parameter in shortcut command - hot key.
01/03/20041.30
  • New commands: qboxcom, beep, stdbeep, cdrom, urlshortcut, monitor, screensaver, standby, and hibernate.
  • Fixed the bug with ~x string sequences.
08/01/20041.20
  • New commands: setdialuplogon, script
  • Special string sequences (~q, ~t, ~n and so on) to allow you to embed quotes and new line characters into the parameters of any command.
19/11/2003 | 1.11 | New options in shortcut command
10/10/2003 | 1.10 | New commands: killprocess, service, memdump, win, lockws.
09/09/2003 | 1.00 | First release.

License

This utility is released as freeware. You are allowed to freely distribute this utility via floppy disk, CD-ROM, Internet, or in any other way, as long as you don't charge anything for this. If you distribute this utility, you must include all files in the distribution package, without any modification !

Using NirCmd utility

This utility is a standalone executable, and it doesn't require any installation process or additional DLLs. just copy the executable to any folder you want, and run it with the desired command-line option, according to your needs.
It's recommended to copy the executable of NirCmd (nircmd.exe) to your windows directory, or to any other folder listed in your PATH environment variable, so you won't need to type the full path of nircmd in each time that you want to use it.
Starting from version 1.50, console version of NirCmd (nircmdc.exe) is also available. In the console version, all error messages goes to the console window, instead of using a message box.

General Syntax Of NirCmd

nircmd.exe {showerror} [command] [command parameters]
The showerror parameter is optional. If you specify this parameter, an error message will be displayed on the screen if an error is occurred during the execution of the command. Otherwise, any error will be ignored. For example:
nircmd.exe showerror rasdial "dial1"
nircmd.exe rasdial "dial1"
In above 2 examples, NirCmd will try to dial with the "dial1" entry. If the dialing process is failed on the first example, an error message describing the problem will be displayed. If the dialing process is failed on the second example, error message won't be displayed.

Special String Sequences

Starting from version 1.20, NirCmd allows you to insert special characters into any parameter in NirCmd commands.
The following table describes the special string Sequences that you can use:
Sequence | Description
~n | New line characters (CR-LF)
~q | Double-quote character: "
~t | Tab character
~xnn | Allows you to represent any character by providing its ascii code in 2-digit Hexadecimal number. For Example: ~x41 ('A' character), ~x27 (single-quote character)
~$variable$ | Represents a system variable. For more information about this option, read below
~~ | Represents a single '~' character.

Example:
infobox "This is the first line~n~qThis is a second line, in quotes~q" "Example"
The above example displays a message-box containing 2 lines.

System Variables

Starting from version 1.40, NirCmd provides special variables that represents folders and other variables on your system. Each variable starts with '~' character, followed by the variable name enclosed with '$' characters. For example: ~$folder.desktop$ represents your desktop folder.

The following table specifies the variables that you can use:
Variable Name | Description
clipboard | Represents the text that you copied into the clipboard.
param.paramname | When you specify a param variable, an input window will appear on the screen, and will ask you to type the text for this variable. The text that you type will be inserted into the command line. For example: in the following command, you will be asked to type 2 parameters (1 and 2), and the text that you type will appear in the message box. nircmd infobox ~$param.1$ ~$param.2$
fparam.number | Sepcifies a parameter loaded from a text file. For more information, see paramsfile command
sys.varname | You can use this option to represent any environment variable on your system. For example: ~$sys.username$, ~$sys.windir$, ~$sys.computername$, ~$sys.logonserver$, ~$sys.temp$, and so on...
nir.exefile | Represents the full-path exe file of the current running NirCmd (For example: c:\winnt\nircmd.exe)
folder.nircmd | Represents the folder the NirCmd is running from.
folder.desktop | Represents the user's desktop folder.
folder.start_menu | Represents the user's start-menu folder.
folder.programs | Represents the user's programs folder (under the start-menu folder).
folder.startup | Represents the user's startup folder.
folder.recent | Represents the user's recent folder.
folder.favorites | Represents the user's favorites folder.
folder.cookies | Represents the user's cookies folder.
folder.appdata | Represents the user's Application Data folder. (For example: C:\Documents and Settings\Administrator\Application Data)
folder.common_desktop | Represents the common desktop folder.
folder.common_start_menu | Represents the common start menu folder.
folder.common_programs | Represents the common programs folder.
folder.common_startup | Represents the common startup folder.
folder.common_favorites | Represents the common favorites folder.
folder.windows | Represents the windows folder. (e.g.: C:\Windows)
folder.system | Represents the system folder. (e.g.: C:\Windows\System32)

Examples:

  • Create a shortcut under the start menu-programs folder:
    shortcut "c:\winnt\system32\calc.exe" "~$folder.programs$\My Programs" "Calculator"
  • Delete a shortcut in the user's desktop:
    execmd del "~$folder.desktop$\calc.lnk"
  • Display the current logged-on user:
    infobox "The current logged-on user is ~$sys.username$" "logged-on user"

Executing NirCmd commands on remote computers

Starting from version 1.40, you can execute all NirCmd commands in remote computers. However, you should be aware of the following restrictions and problems:
  • This option is only available for Windows NT, Windows 2000 and Windows XP. You cannot use it on Windows 9x machines.
  • You must log on to the remote machine as administrator.
  • The Schedule service in the remote machine must be started. (By default, the Schedule service is automatically started in all NT/2000/XP machines, so you don't have to worry too much about this)
  • Due to some limitations of the Schedule service, you have to wait up to 60 seconds until the command is actually executed in the remote machine.
  • The command in the remote machine is executed under 'SYSTEM' account, and thus some commands may not work in the same way as you execute them locally.

There are 2 commands for executing NirCmd in remote machines:

  • remote - for executing command on a single remote computer.
  • multiremote - for executing command on multiple remote computers.

NirCmd Commands

Command Syntax And Description
remote
remote {copy} [\\computer] [NirCmd command]
Executes NirCmd command in a remote computer. if {copy} parameter is specified, NirCmd will copy itself to the Windows directory of the remote machine. You must specify this parameter if NirCmd doesn't exist in the Windows directory of the remote machine.
Examples:

remote copy \\comp1 exitwin poweroff
remote \\comp2 infobox "This is a message from NirCmd" "Hello !"
remote \\comp3 lockws
multiremote
multiremote {copy} [computers file] [NirCmd command]
Executes NirCmd command in multiple remote machines. if {copy} parameter is specified, NirCmd will copy itself to the Windows directory of the remote machines. You must specify this parameter if NirCmd doesn't exist in the Windows directory of the remote machines.
The [computers file] parameter is a file that contains the computers list separated by Enter characters (CRLF).
Example for computers list file:
\\comp1
\\comp2
\\winxp1
\\winxp2
\\nirsoft

The command specified in [NirCmd command] will be executed in all computers specified in the computers file.
Examples:
  • Turn off all computers specified in computers.txt
    multiremote "c:\temp\computers.txt" exitwin poweroff force
  • Lock all computers specified in computers.txt
    multiremote "c:\temp\computers.txt" lockws
  • Copy NirCmd to all computers specified in computers.txt, and then turn off their monitors.
    multiremote copy "c:\temp\computers.txt" monitor off
  • Copy NirCmd to all computers specified in computers.txt, and run WinUpdatesList utility in order to save Windsows Updates info in all computers.
    multiremote copy "c:\temp\computers.txt" exec hide c:\temp\wul.exe /shtml "c:\temp\wul_~$sys.computername$.html"
cmdwait
cmdwait [Number of Milliseconds] [NirCmd Command]
Wait the specified number of Milliseconds, and then execute the specified NirCmd command.

Example:
cmdwait 1000 monitor off

paramsfile
paramsfile [Parameters File] [Delimiters] [Quote Character] [NirCmd Command]
This powerfull command allows you to execute NirCmd Command multiple times, by loading one or more parameters from a text file. The text file can be comma-delimited, tab-delimited, semicolon-delimited, or delimited by any char that you specify in [Delimiters] parameter.

Here's an example... Let's say that you have the following text file, containing user names and passwords, delimited by comma:

user01, 123456
user02, abcfg
user03, 5fr23
user04, 33333

The following NirCmd commands sequence will create 4 users with the specified user-names and passwords (by using 'net user' command provided by Windows 2000/XP operating system)
nircmd.exe paramsfile "c:\temp\users.txt" "," "" execmd net user ~$fparam.1$ ~$fparam.2$ /add

The ~$fparam.1$ specifies the first entry in each line - the user name. The ~$fparam.2$ specifies the second entry in each line - the password.

Examples:

paramsfile "c:\temp\folders.txt" "" "" execmd md ~$fparam.1$
paramsfile "c:\temp\shortcuts.txt" "," "~q" shortcut ~$fparam.1$ "~$folder.desktop$" ~$fparam.2$

infobox
infobox [message text] [title]
Displays a simple message box on the screen.
Example:
infobox "This is a message box !" "message"
qbox
qbox [message text] [title] [program to run]
Displays a question dialog-box on the screen. If the user answers "Yes", run a program
Example:
qbox "Do you want to run the calculator ?" "question" "calc.exe"
qboxcom
qboxcom [message text] [title] [NirCmd Command]
Displays a question dialog-box on the screen. If the user answers "Yes", execute the NirCmd command in the third parameter.
Examples:
qboxcom "Do you want to lock your workstation ?" "question" lockws
qboxcom "Do you want to turn off the monitor ?" "monitor" monitor off
script
script [Script File]
This command allows you to execute a sequence of commands stored inside the file specified in [Script File] parameter.
Example:
script "c:\temp\msg.ncl"
Example for a script:
infobox "Hello !" "This is the first message"
infobox "Hello !" "This is the second message"
infobox "Hello !" "This is the third message"
regedit
regedit [key] [value name]
Opens RegEdit with the specified key/value.
Examples:
regedit "HKLM\Software\Microsoft\Windows\CurrentVersion" "CommonFilesDir"
regedit "HKEY_CURRENT_USER\Control Panel\Desktop" "Wallpaper"
regsetval
regsetval [type] [key] [value name] [value]
Writes a value to the Registry. the [type] parameter can be "sz" or "expand_sz" for strings, "dword" for 32-bit number, or "binary" for binary data. If the key you specify in [key] parameter doesn't exist, it'll automatically be created.
Examples:
regsetval dword "HKEY_CURRENT_USER\Software\Test" "Value1" "0xaabbccdd"
regsetval dword "HKCU\Software\Test" "Value2" "10561"
regsetval sz "HKCU\Software\Test" "Value3" "string value"
regsetval binary "HKLM\Software\Test" "Value4" "6a cb ab dd 80 86 95"
regdelval
regdelval [key] [value]
Deletes a value from the Registry.
Example:
regdelval "HKEY_CURRENT_USER\Software\Test" "Value1"
regdelkey
regdelkey [key]
Deletes entire key from the Registry. This command will failed if the specified key has one or more subkeys.
Example:
regdelkey "HKEY_CURRENT_USER\Software\Test"
inisetval
inisetval [INI filename] [section] [key] [value]
Writes a value into INI file. If the file doesn't exist, it'll automatically be created.
Example:
inisetval "c:\windows\test.ini" "section1" "TestValue" "1"
inidelval
inidelval [INI filename] [section] [key]
Deletes a key-value pair inside INI file.
Example:
inidelval "c:\windows\test.ini" "section1" "TestValue"
inidelsec
inidelval [INI filename] [section]
Deletes entire section in INI file, including all values in it.
Example:
inidelsec "c:\windows\test.ini" "section1"
regsvr
regsvr [reg or unreg] [filename or wildcard] {log file}
Register or unregister DLL/OCX files.
In the first parameter, specify "reg" for registering files, or "unreg" for unregistering files.
In the second parameter, you can specify a single file that you want to register or unregister, or multiple files, by using wildcard.
The third parameter is optional, and specifies a log filename for saving the results of the registering operation.
Examples:
regsvr reg "f:\winnt\system32\fv*.ocx" "c:\temp\log1.txt"
regsvr unreg "f:\winnt\system32\ab*.dll"
rasdial
rasdial [Entry Name] {Phonebook File} {User Name} {Password} {Domain}
Dials to RAS entry (VPN or phone line), without displaying any user interface. Except the [Entry Name] parameter, all other parameters are optional. If you don't specify the optional parameters or you specify empty string (""), the default values are used.
Examples:
rasdial "My Internet"
rasdial "VPN1" "" "user1" "abc1234" "domain1"
inetdial
inetdial [Entry Name]
Dials to RAS entry (VPN or phone line), and display informational dialog-box during the dialing process.
This command is only supported If Internet Explorer version 4.0 or greater is installed. Be aware that this command might not work on old versions of Windows 98.
Examples:
inetdial "VPN1"
rasdialdlg
rasdialdlg [Entry Name] {Phonebook File} {Phone Number or IP Address}
Displays a RAS entry for dialing. The {Phonebook File} and {Phone Number} parameters are optional. If you don't specify the {Phonebook File} parameter or you specify an empty string ,the default phonebook is used.
This command is only supported on Windows NT, Windows 2000, and Windows XP. It's not supported on Windows 98/ME.
Examples:
rasdialdlg "Internet1" "" "9876543"
rasdialdlg "VPN1"
rashangup
rashangup [Entry Name]
Hangs up a RAS connection. You can use this command to disconnect a connection that you previously created with inetdial or rasdial commands.
Examples:
rashangup "VPN1"
setdialuplogon
setdialuplogon [Entry Name] [User Name] {Password} {Domain} {Phonebook File}
Modifies the user name, password and domain of a dial-up item.
The parameters:
  • [Entry Name]: The name of the dial-up entry
  • [User Name]: The user-name to set into the specified dial-up entry.
  • {Password}: The password to set into the specified dial-up entry.
  • {Domain}: The domain name to set into the specified dial-up entry.
  • {Phonebook File}: The phonebook file containing the entry you want to change. If you don't specify this parameter, the default phonebook is used.
Examples:
setdialuplogon "VPN1" "user1" "asder443" "domain1"
setdialuplogon "Internet1" "nirs3" "q5r4df7yh5"
exitwin
exitwin [shutdown type] {additional option}
This command terminates the current session of Windows. The [shutdown type] parameter can be one of the following values:
  • logoff: Shut down all running processes, log off the current user, and display the log on dialog to allow another user to log into the system.
  • reboot: Shut down the entire system, and then reboot.
  • poweroff: Shut down the entire system, and then turn off the power. (Only for systems that support this feature !)
  • shutdown: Simply shut down the entire system, without reboot and without turning the power off.
You can also use one of the following additional options:
  • force: Forces all applications to terminate immediately. Using this option can caused the current running application to lose data. Use it only in extreme cases !
  • forceifhung: Forces applications to terminate if they are not responding. This option is only available in Windows 2000/XP.

Examples:
exitwin reboot
exitwin poweroff force
exitwin logoff forceifhung
initshutdown
initshutdown {message} {timeout value in seconds} {force} {reboot}
Initiate a system shutdown. This command is somewhat similar to exitwin command, but it has some other features that exitwin doesn't support. This command is not supported on Windows 95/98/ME. All parameters of this command are optional. If you don't specify any parameter, the system shutdown is initiated without displaying message and without waiting.
The parameters:
  • {message}: The message to display before starting the system shut down.
  • {timeout value in seconds}: The number of seconds to wait before starting the system shut down.
  • {force}: Forces all applications to terminate, even without saving your work.
  • {reboot}: Reboot after the system shutdown.

Examples:
initshutdown "shutting down the system within 60 seconds" 60 reboot
initshutdown "" 0 force
abortshutdown
abortshutdown
Abort the system shutdown that initiated with initshutdown command. This command doesn't accept any additional parameters.
Example:
abortshutdown
lockws
lockws
Lock the workstation. After locking your workstation, you must type your password in order to continue your work. This command is only available on Windows 2000 and Windows XP.
monitor
monitor [action]
Changes the state of the display monitor. The [action] parameter may contain the following values:
  • off: Turn off the monitor
  • on: Turn on the monitor
  • low: Set the monitor to low power state.

This command only works in systems that support this feature.
Examples:
monitor off
monitor on
screensaver
screensaver
Starts the default screen saver.
standby
standby {force}
Shuts down the computer and puts it in 'standby' mode. If the {force} parameter is specified, the system is forced to go into standby mode without asking for permission from all applications. Generally, it's not recommended to use this parameter.
This command works only in systems that supports standby mode.
Example:

standby force
standby
hibernate
hibernate {force}
Shuts down the computer and puts it in 'hibernate' mode. If the {force} parameter is specified, the system is forced to go into hibernate mode without asking for permission from all applications. Generally, it's not recommended to use this parameter.
This command works only in systems that supports hibernate mode.
Example:

hibernate force
hibernate
shortcut
shortcut [filename] [folder] [shortcut title] {arguments} {icon file} {icon resource number} {ShowCmd} {Start In Folder} {Hot Key}
Creates a shortcut to a file.
The parameters:
  • [filename]: Create a shortcut to this filename.
  • [folder]: Specify the destination folder that inside it the shortcut will be created. You can specify any valid folder, including the special variables that represent system folders, like ~$folder.desktop$ (Desktop folder), ~$folder.programs$ (Start-Menu-Programs folder), and so on...
  • [shortcut title]: The text displayed in the shortcut.
  • {arguments}: Optional parameter - Additional arguments to execute the filename.
  • {icon file}: Optional parameter - Use this parameter if your want that the shortcut will be displayed with icon other than the default one.
  • {icon resource number}: Optional parameter - The resource number inside the icon file.
  • {ShowCmd}: Optional parameter - Use this parameter if you want to maximize or minimize the window of the program. Specify "max" to maximize the window or "min" to minimize it.
  • {Start In Folder}: Optional parameter - Specifies the "Start In" folder. If you don't specify this parameter, the "Start In" folder is automatically filled with the folder of the program you specify in [filename] parameter.
  • {Hot Key}: Optional parameter - Specifies an hot-key that will activate the shortcut. For example: Alt+Ctrl+A, Alt+Shift+F8, Alt+Ctrl+Shift+Y

Examples:
shortcut "f:\winnt\system32\calc.exe" "~$folder.desktop$" "Windows Calculator"
shortcut "f:\winnt\system32\calc.exe" "~$folder.programs$\Calculators" "Windows Calculator"
shortcut "f:\Program Files\KaZaA\Kazaa.exe" "c:\temp\MyShortcuts" "Kazaa"
shortcut "f:\Program Files" "c:\temp\MyShortcuts" "Program Files Folder" "" "f:\winnt\system32\shell32.dll" 45
shortcut "f:\Program Files" "c:\temp\MyShortcuts" "Program Files Folder" "" "" "" "max"
cmdshortcut
cmdshortcut [folder] [shortcut title] [command]
Creates a shortcut to NirCmd command. When you activate the shortcut (by doubleclicking it), The command that you specify in [command] parameter will be executed.
Example:
cmdshortcut "~$folder.desktop$" "Open CDROM" cdrom open k:
cmdshortcut "c:\temp" "Turn Monitor Off" monitor off
urlshortcut
urlshortcut [URL] [Folder] [Shortcut Title]
Creates a shortcut to URL address. (Like the shortcuts in Favorities of Internet Explorer) The [Folder] parameter specifies the destination folder that inside it the shortcut will be created. If you want to create the shortcut inside your default Favorities folder, use ~$folder.favorites$ variable.
Examples:
urlshortcut "http://www.nirsoft.net" "~$folder.favorites$" "NirSoft Web Site"
urlshortcut "http://www.google.com" "~$folder.favorites$\Search Engines" "Google"
urlshortcut "http://www.yahoo.com" "c:\temp" "Yahoo"
exec
exec [show/hide] [application + command-line]
Runs an application, and optionally specify one or more command-line parameters for the executed application. The [show/hide] parameter specifies whether the running application will be visible or not. If 'hide' is specified, the running application won't be visible to the user.
Example:
exec show "f:\winnt\system32\calc.exe"
exec hide "c:\temp\wul.exe" /savelangfile
exec2
exec2 [show/hide] [working folder] [application + command-line]
Similar to exec command, but also provide another parameter, [working folder], that specifies the default working folder for the application that you run.
Example:
exec2 show "f:\winnt\system32" "f:\winnt\system32\calc.exe"
exec2 hide c:\temp "c:\temp\wul.exe" /savelangfile
execmd
execmd [command]
Executes a command of Command-Prompt (Console Window) without displaying anything on the screen.
Examples:
execmd del "~$folder.desktop$\calc.lnk"
execmd mkdir f:\temp\desktop1
execmd copy "~$folder.desktop$\*.lnk" f:\temp\desktop
shexec
shexec [operation] [filename]
Opens or Prints a filename according to the definition of the file extension in the Registry. For example: a filename with .doc extension will be opened with MS-Word, a filename with .html extension will be opened with your default browser. If you specify a valid web site address, the Web site will be opened in your default browser. the [operation] parameter can be "open" or "print".
Examples:
shexec "open" "c:\my documents\abc.doc"
shexec "print" "d:\files\1.pdf"
shexec "open" "http://www.nirsoft.net"
setfiletime
setfiletime [filename or wildcard] [Created Date] {Modified Date} {Accessed Date}
Changes the Created/Modified/Accessed date of one or more files. The first parameter can be a single filename or wildcard string. The dates parameters must be specified in the following format: "dd-mm-yyyy hh:nn:ss" if a date parameter is not specified or you specify an empty string (""), the date won't be changed. If you specify "now" as date parameter, the current date and time will be used
Examples:
setfiletime "c:\temp\*.exe" "15-05-2004 11:22:12" "22-01-2005 21:22:55"
setfiletime "c:\temp\myfile.txt" "24-06-2003 17:57:11" "" "22-11-2005 10:21:56"
setfiletime "c:\temp\myfile.txt" now now
setfilefoldertime
setfilefoldertime [filename, folder or wildcard] [Created Date] {Modified Date} {Accessed Date}
Changes the Created/Modified/Accessed date of one or more files/folders. This command is very similar to setfiletime command. The only difference is that setfilefoldertime command can also change the date of a folder - only under Windows 2000/XP.
Examples:
setfilefoldertime "c:\temp\myfolder" "10-01-2003 11:22:12" "12-11-2002 02:34:11"
setfilefoldertime "c:\temp\myfolder" now now
setdisplay
setdisplay [width] [height] [color bits] {-updatereg} {-allusers}
Changes your display settings. The [width] and [height] parameters represents the number of pixels on your screen. The [color bits] parameter represents the number of colors shown on your screen (8 - 256 color, 16 - 16bit color, 24 - 24bit color, and so on). If you specify the {-updatereg} parameter, the new settings will be saved in the Registry. If you specify both {-updatereg} and {-allusers} parameters, the new settings will be saved in the Registry for all users.
Example:
setdisplay 800 600 24 -updatereg
setdisplay 1024 768 8
killprocess
killprocess [process]
Terminates the specified process. In the [process] parameter, you can specify the full path of the process filename (e.g: 'C:\Program Files\Internet Explorer\iexplore.exe') or the name of the process only, without the path (e.g.: iexplore.exe). You can also specify the Process ID, by adding the '/' character as a prefix (e.g. /1120).
Examples:
killprocess iexplore.exe
killprocess "c:\winnt\system32\calc.exe"
killprocess /1830
memdump
memdump [process] [dump file] [bytes per line] {bytes to read} {start address} {nohex} {noascii}
Reads the memory of process according to the parameters you specify, and writes it into a text file.
The parameters:
  • [process]: The process that you want to dump its memory. You can specify the full path of the process filename, the process name only, or the Process ID - by adding the '/' chararcter as prefix (e.g.: /520)
  • [dump file]: The filename to save the memory content of the specified process.
  • [bytes per line]: Number of memory bytes per line in the saved dump file.
  • {bytes to read}: Number of bytes to read.
  • {start address}: Start the dumping process from this memory address.
  • {nohex}: Optional. If you specify this parameter, the memory data won't be saved in Hexadecimal format.
  • {noascii}: Optional. If you specify this parameter, the memory data won't be saved in Ascii format.

Examples:
memdump iexplore.exe "c:\temp\dump.txt" "16" "0x10000" "0x400000"
memdump calc.exe "c:\temp\calc.txt" "32" "0x30000" "0x400000" nohex
memdump /525 "c:\temp\dump.txt" "16" "0x100000" "0x120000" noascii
service
service {\\Computer} [action] [service name]
Changes the status and the startup type of services and drivers.
The parameters:
  • {\\Computer}: Optional. Specifies the name of the remote computer. If you omit this parameter, the local computer is used.
  • [action]: The action you want to do. This parameter may contain one of the following values:
    • start: Starts the specified service or driver.
    • stop: Stops the specified service or driver.
    • pause: Pauses the specified service or driver.
    • continue: Continues the specified service or driver.
    • restart: Stops and then starts again the specified service or driver.
    • auto: Changes the startup type of the specified service or driver to Automatic.
    • manual: Changes the startup type of the specified service or driver to Manual.
    • disabled: Changes the startup type of the specified service or driver to Disabled.
    • boot: (Only for drivers) Changes the startup type of the specified driver to 'Boot'.
    • system: (Only for drivers) Changes the startup type of the specified driver to 'System'.
  • [service name]: The name of the service or driver.

Examples:
service start schedule
service \\remote stop schedule
service restart w3svc
win
win [action] [find] [window to find] [Additional Parameters]
For child windows:
win child [find] [top window to find] [action] [find] [child window to find] [Additional Parameters]
This command allows you to close, hide, show, maximize, and minimize the specified window.
The parameters:
  • [action]: The action you want to do on the specified window:
    • child: Allows you to make an action on child window of the specified top-level window.
    • close: Closes the specified windows.
    • hide: Hides the specified windows.
    • show: Shows again the specified windows. (after hiding it with 'hide' command)
    • hideshow: Hides the specified windows and then shows it again. You can use this action to repaint the content of a window.
    • activate: Bring the specified window to the front.
    • max: Maximizes the specified windows.
    • min: Minimizes the specified windows.
    • normal: Restores the specified windows to normal state, after minimizing or maximizing them.
    • trans: Make the specified windows transparent. the value in [Additional Parameters] is a number between 0 and 255 that specifies the transparency level. 0 = completely transparent. 255 = completely opaque.
    • setsize: Set the size of the specified windows. the values in [Additional Parameters] specifies the desired window size - x, y, width, height.
    • move: move/resize the window. the values in [Additional Parameters] specifies the number of pixels to move/change: x, y, width, height.
    • center: Center the specified windows.
    • settopmost:Set the top-most state of the specified windows. If the value in [Additional Parameters] is 1, the specified windows will become top-most windows, if the value is 0, the top-most state will be canceled.
    • redraw: Redraw the specified windows.
    • settext: Modify the caption/title of the specified windows.
    • focus: Set the focus to the specified window.
    • disable: Disable the specified window.
    • enable: Enable the specified window.
    • +style: Add style bits to the specified window. The value of [Additional Parameters] specifies the style bits to add.
    • -style: Remove style bits from the specified window. The value of [Additional Parameters] specifies the style bits to remove.
    • +exstyle: Add extended style bits to the specified window. The value of [Additional Parameters] specifies the extended style bits to add.
    • -exstyle: Remove extended style bits from the specified window. The value of [Additional Parameters] specifies the extended style bits to remove.
  • [find]: The method to find the window
    • handle: Finds the desired window by specifying the handle of the window in [window to find] parameter.
    • id: Finds the desired child window by specifying the id of the child window. Useful only for child windows.
    • class: Finds the desired window by specifying the class name of the window in [window to find] parameter.
    • title: Finds the desired window by specifying the exact title of the window in [window to find] parameter.
    • stitle: Finds the desired window by specifying the first few characters of the window in [window to find] parameter.
    • ititle: Finds the desired window by specifying a sequence of characters that exists in the window title.
    • alltop: All top windows.
  • [window to find]: Specifies the window by handle, class name, or title, according to the value of the previous parameter.

Examples:
win close title "calculator"
win hide stitle "calculat"
win hide ititle "culat"
win show class "SciCalc"
win activate title "my computer"
win max handle 0x00009c01
win redraw alltop
win trans ititle "internet explorer" 192
win setsize class "IEFrame" 50 50 400 300
win settopmost class "SciCalc" 1
win child class "Shell_TrayWnd" hide class "button"
win child class "Shell_TrayWnd" show class "button"
win child title "calculator" hide id 128
win -style title "my computer" 0x00C00000
win child title "my computer" +exstyle all 0x00400000
cdrom
cdrom [action] {drive:}
This command allows you to open and close the door of your CD-ROM drive. The [action] parameter can be 'open' or 'close'. If you don't specify the {drive:} parameter, the default CD-ROM will be used.
Examples:
cdrom open
cdrom close
cdrom open J:
cdrom close R:
clipboard
clipboard [Action] [Parameter]
Allows you to set a value into the clipboard and clear the clipboard.

[Action] may contain one of the following values:

  • set - set the specified text into the clipboard.
  • readfile - set the content of the specified text file into the clipboard.
  • clear - clear the clipboard.
  • writefile - write the content of the clipboard to a file. (text only)
  • addfile - add the content of the clipboard to a file. (text only)

Examples:
clipboard set "123456"
clipboard set ~$folder.desktop$
clipboard set ~$folder.start_menu$
clipboard readfile "c:\temp\info1.txt"
clipboard addfile "c:\temp\clip1.txt"
clipboard clear
gac
gac [Action] [Parameter]
Allows you to install an assembly in the Global Assembly Cache.
Examples:
gac install "C:\temp\MyAssembly\bin\Release\6\MyAssembly.dll"
beep
beep [Frequency] [Duration]
Plays a beep. The [Frequency] parameter specifies the frequency, in hertz. The [Duration] parameter specifies the duration of the sound in milliseconds. Under Windows 95/98/ME, the above parameters are ignored, and only a standard Windows beep is played.
Example:
beep 500 2000
stdbeep
stdbeep
Plays the standard beep of Windows.
Example:
stdbeep
setvolume
setvolume [device] [left-volume] [right-volume]
Set the volume level of your sound device. The [device] parameter represents the device identifier. In most cases, you should use '0' value for this parameter. The [left-volume] and [right-volume] parameters should contain a value between 0 (silence) and 65535 (full volume) that represents the volume level for left and right channels.
Examples:
setvolume 0 0 0
setvolume 0 32768 32768
setvolume 0 0xffff 0
setsysvolume
setsysvolume [volume] {Component} {Device Index}
Set the sound volume for your system. Changing this value also affects the sound volume settings under 'Control Panel'. The [volume] parameter should contain a value between 0 (silence) and 65535 (full volume).
{Component} is an optional parameter that specifies one of the following sound components: master, waveout, synth, cd, microphone, phone, aux, line, headphones, wavein. The default value is 'master' (for master volume)
{Device Index} is an optional parameter that specifies the sound device index. The default value is 0. This parameter is useful if you have more than one sound card.
Examples:
setsysvolume 0x8000
setsysvolume 0
setsysvolume 25000 waveout
setsysvolume 25000 master 1
setsysvolume2
setsysvolume2 [left volume] [right volume] {Component} {Device Index}
Similar to setsysvolume, but instead of setting the whole sound volume, setsysvolume2 set the right channel and left channel separately.
Examples:
setsysvolume2 10000 20000
setsysvolume2 30000 0
setsysvolume2 25000 15000 waveout
setsysvolume2 30000 0 master 1
changesysvolume
changesysvolume [volume change] {Component} {Device Index}
Increases or decreases the system volume. the [volume change] parameter specifies the number of volume units to increase or decrease (negative value to decrease, positive value to increase).
{Component} is an optional parameter that specifies one of the following sound components: master, waveout, synth, cd, microphone, phone, aux, line, headphones, wavein. The default value is 'master' (for master volume)
{Device Index} is an optional parameter that specifies the sound device index. The default value is 0. This parameter is useful if you have more than one sound card.
Examples:
changesysvolume 5000
changesysvolume -3000
changesysvolume 0x1000 waveout
changesysvolume 0x1000 master 1
changesysvolume2
changesysvolume2 [left volume change] [right volume change] {Component} {Device Index}
Similar to changesysvolume, but instead of changing the whole sound volume, changesysvolume2 changes the left channel and the right channel separately.
Examples:
changesysvolume2 1000 -1000
changesysvolume2 -3000 0
changesysvolume2 0 -5000 waveout
changesysvolume2 -3000 0 master 1
mutesysvolume
mutesysvolume [action] {Component} {Device Index}
Mute/unmute the system volume.
In the [action] parameter, specify 1 for mute, 0 for unmute, or 2 for switching between mute and normal state.
The second parameter is optional, and you can specify one of the following sound components: master, waveout, synth, cd, microphone, phone, aux, line, headphones, wavein. The default value is 'master' (for master volume)
{Device Index} is an optional parameter that specifies the sound device index. The default value is 0. This parameter is useful if you have more than one sound card.
Examples:
mutesysvolume 1
mutesysvolume 0
mutesysvolume 2 waveout
mutesysvolume 1 master 1
wait
wait [milliseconds]
Simply wait the specified number of milliseconds.
Examples:
wait 1000
wait 500
sysrefresh
sysrefresh {Refresh Type}
Initiate a general system refresh. You can use this command to refresh your system after changing your system settings in the Registry (e.g: changing desktop icons size, environment variables, and so on..) {Refresh Type} is optional. You can specify one of the following values: "environment" - for refreshing the environment variables, "policy" - for policy settings, "intl" for locale settings.
Examples:
sysrefresh
sysrefresh environment
sysrefresh policy
setcursor
setcursor [X] [Y]
Set the position of mouse cursor. The [X] and [Y] parameters specifies the desired cursor position.
Example:
setcursor 100 50
movecursor
movecursor [X] [Y]
move the mouse cursor. The [X] and [Y] parameters specifies the number of pixels to move. Example:
movecursor 10 10

Feedback

If you have any problem, suggestion, comment, or you found a bug in my utility, you can send a message to nirsofer@yahoo.com