I realize this question has already been answered with a perfectly good resolution that is native to Windows and thus should be the most compatible, and I agree completely.
I also wanted to say that I disagree with @splattne's comment (but not his actual answer) -- that the resolution in the other referenced thread deserves the credit. That answer involves running the script as a different user (SYSTEM), which is pretty much the equivalent of giving the script root access. It will also fail for jobs such as ROBOCOPY
(as referenced by John Rennie), which require network access.
I have never tried CMDOW
before, but I would like to offer another similar resolution, which [although is not natively-installed on Windows] is still highly-portable to most versions, and comes in both 32 and 64-bit versions, and that is NirCmd.
NirCmd is a very powerful tool that has myriads of options, the most useful of which, I personally find to be its ability to launch hidden command windows by simply executing the following:
c:\path\to\nircmd.exe exec hide "c:\path\to\mybat.bat"
From the exec
section of The NirCmd Command Reference:
exec [show/hide/min/max] [application + command-line]
Runs an application, and optionally specify one or more command-line parameters for the executed application. The [show/hide/min/max] 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. If 'max' is specified, the running application window will be maximized. If 'min' is specified, the running application window will be minimized.
EDIT:
I was trying to run a ROBOCOPY
job and tried the method in this answer, and it did not work, even after editing the network access privileges. I tried double-clicking the script and could not get it to work, but could only get it to run under an elevated command prompt. I did create a shortcut to the batch file and have it run as Administrator and was able to get it execute by double-clicking it, but the method I ended up going with was to run it hidden as SYSTEM (I know, I know) -- but it does work with ROBOCOPY
, for what it's worth, as long as the batch file has the correct permissions.
EDIT 2:
For some reason, it would not work as SYSTEM (probably the network access thing referenced earlier) -- I only noticed this after actually running ROBOCOPY
without the /L flag, which is basically just a simulation and [apparently] doesn't actually connect to the remote system, but when I run the batch file with highest privileges and check the hidden box, and I can still run it as the logged in user in the background without a command window showing, for whatever this is worth to anyone.