60

Is there a "noop"-esque exe somewhere as part of the Windows installation? I'm preparing some batch jobs and scheduled tasks, and for a couple reasons I'd like to reference an executable that does nothing -- i.e. launches with no visible window, and quits immediately.

Does such an executable exist in the usual Windows installation anywhere? or how can I come close? I do not want to have to depend on anything not already included in Windows.

3
  • 2
    From observation: svchost.exe doesn't open anything. Jan 22, 2012 at 12:40
  • @todda.speot.is you should include that as a full answer. Feb 19, 2012 at 8:05
  • 2
    Did it have to be an external (executable) file? If not, then the rem command could have worked (and depending on where in the batch-file it is being used, possibly even the :: variant).
    – Synetech
    Nov 29, 2013 at 20:03

10 Answers 10

61

You may use rundll32:

  • No console window
  • No side effects
  • Just 44 KB
  • No arguments required
  • Works on every recent Windows version (XP, Vista, 7), and probably on every NT-based system.
6
  • 2
    So why is it there?
    – Nathan
    Feb 14, 2012 at 4:04
  • 8
    @Nathan With the appropriate arguments, it can call a function inside of a DLL
    – Andrea
    Feb 14, 2012 at 8:32
  • Right. For example, imagine a simple print.exe program that simply prints out the parameters it is passed. Without any arguments it would do nothing, but giving it arguments does something: > print foobar.
    – Synetech
    Feb 24, 2012 at 6:45
  • @Andrea then it doesn't do nothing unless given no arguments. Though that is nothingy enough as per his requirements.
    – barlop
    May 23, 2013 at 8:48
  • 3
    Except it is probably not really a no-op.
    – airstrike
    Mar 25, 2014 at 21:41
47

Is there a "noop"-esque exe somewhere as part of the Windows installation?

Meaning specifically a program that is meant to do nothing and nothing else? Yes and no. No in that Windows does not include one by default, but it does include the ability to make one yourself.


Option 1

Run notepad.exe, type the following lines, and save it as C:\ret.scr (don’t forget the blank line):

a
ret

rcx
1
n ret.com
w
q

Compile it with debug.exe at the command-prompt (cmd.exe) with following command:

C:\> debug < ret.scr

You now have a program, ret.com (in C:\) that can be used in batch files which does absolutely nothing whatsoever (well, other than quit, if that counts).

Note: debug is not included on 64-bit systems.


Option 2

In Vista and up, the .NET framework is included by default, so you could also make a native, Windows do-nothing .exe with C# (64-bit compatible):

Run notepad.exe and type the following lines, saving it as C:\ret.cs:

class ret
{
   static void Main() {
   }
}

Compile it with csc.exe at the command-prompt (cmd.exe) with the following command:

C:\> csc ret.cs /target:winexe

You now have another program, ret.exe (in C:\) that can be used in batch files which does nothing but return. The target option makes it a GUI app so it does not even open a terminal window.

6
  • 2
    Damn Brilliant.. everybody should upvote you for that one.. I always wanted to learn assembly language.. I never used debug and thought it died with DOS. So glad I stumbled on your answer here. maybe fodder for a future hobby!
    – barlop
    Feb 24, 2012 at 14:16
  • 13
    For me, csc.exe was not on my path, but it was located at C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe Aug 3, 2012 at 4:24
  • what about an EXE which is compiled from a C program which just has a main method, like your csc.exe Is that doing much much more than the program you wrote in debug? for example, is there much much more assembly language there with that program?
    – barlop
    May 23, 2013 at 8:51
  • 1
    @barlop, generally yes. While an empty main function seems like it would, or at least should be nothing more than a ret, if you open such a program in a disassembler (or even a hex-editor), you will see that it is much, much more than that. It will usually set up all kinds of segments (code, data, etc.), prepare stacks and heaps, not to mention import all kinds of functions and strings and such even if it never actually uses them.
    – Synetech
    May 24, 2013 at 19:12
  • 1
    On my Windows 8.1 x64 system I had the same issue that @AlcubierreDrive did above (I had to go and find the .NET Framework path). On my system there were a number of versions (I chose the last) each on a different path: * C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe * C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe * C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe * C:\Windows\Microsoft.NET\Framework64\v2.0.50727\csc.exe * C:\Windows\Microsoft.NET\Framework64\v3.5\csc.exe * C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe
    – O.M.Y.
    Apr 16, 2016 at 15:53
11

There aren't any programs included with Windows (that I know of) which immediately exit when executed (at least on purpose.)

In Windows Vista and newer, however, there is the timeout.exe utility. Timeout.exe will wait a specified number of seconds and then exit. For example:

C:\>timeout /t 0 > nul:

Setting timeout.exe to wait for 0 seconds is about as close as a you'll get to an EXE that immediately exits.

5
  • 3
    To do what the Op wants, use timeout like this "timeout /t 0 > nul:" - which will run the timeout command without any output and will quit immediately. Jan 22, 2012 at 10:05
  • @misterjaytee good idea. Jan 22, 2012 at 10:08
  • @Tom: A console window. It won't open a command prompt unless you run cmd.exe specifically. Jan 22, 2012 at 15:02
  • @grawity: The Task Scheduler needs a command processor for the command to run, hence the console window will briefly show. Jan 22, 2012 at 18:06
  • @TomWijsman Try as I might, I can't get any new window to open up. Jan 22, 2012 at 18:44
6

Without parameters "C:\Windows\hh.exe" (Microsoft® HTML Help Executable) does nothing and it is included in any Windows-Version I guess.

3

I've tried rndll32.exe and hh.exe but both of then didn't alter the %ERRORLEVEL%. It is an environment variable that says if the last executable was successful. Works like the unix return code.

My noop command below will set the %ERRORLEVEL% to zero is:

cd %CD%

Just changing the working directory to the current one.

1
  • (1) There's a difference between nop and ret. (2) cd is a console command, so it will flash a console window if you run it from outside a console, so it's not exactly no-op.
    – Synetech
    Aug 12, 2021 at 16:49
2

wscript with no arguments runs no script at all, and is a "GUI" executable (does not open a console).

1
  • 3
    When I run wscript with no arguments I get a "Windows Script Host Settings" that appears. Windows 7 64-bit. Running wscript /b seems to work though. Jan 22, 2012 at 22:37
0

the command echo off does nothing within a batch (.BAT) file. Although it is not an executable it is an windows internal command.

2
  • 8
    Actually it does do something, it turns echoing off. That might seem like nothing if you have it set to off, but if you want echoing, then it certainly does do something.
    – Synetech
    Feb 24, 2012 at 6:47
  • 8
    and like rem, it's not a windows exe
    – barlop
    Mar 1, 2012 at 19:40
0

Compile a simple "Hello World" C++ program to create a simple exe which would exit immediately.
Save following code in a text file with some name like a.cpp:

#include<iostream>
int main()
{ std::cout<<"Hello World";
return 0;
}

Then, compile it with LATEST C++ compiler like MinGW for Windows 7.
In case of MinGW, execute following command in PowerShell or Command Prompt: g++ path\a.cpp (Assuming that you have set environmental PATH variable of g++ binary location or you are in g++ binary directory i.e. c:\mingw\bin by default). After command execution, you will get a.exe which will display Hello World and exit. Verify by double-click... cmd window will appear and disappear immediately. Command line access will display Hello World and return you to CLI prompt.
Then, you can move this a.exe in system32 or anywhere deep inside Windows. You can even roll it out in installation disk of Windows.

7
  • 3
    I’m pretty sure that a C++ compiler is not included with Windows.
    – Synetech
    Feb 24, 2012 at 6:51
  • 7
    Printing "Hello World" is hardly doing nothing. Feb 24, 2012 at 7:17
  • @Synetech Compilation is required only one time as long as CPU architecture is same..
    – user79032
    Feb 24, 2012 at 15:18
  • 1
    @KeithThompson I don't think it would interference with BAT algorithm, but if it really matters, replace Hello World with ASCII null character..
    – user79032
    Feb 24, 2012 at 15:21
  • 5
    > I don't think it would interference with BAT algorithm, but if it really matters, replace Hello World with ASCII null character Or just remove the print command altogether.
    – Synetech
    Feb 24, 2012 at 17:13
0

You can write a no-op in C like so

void main() {

}

and compile it into an .exe file. For example, if you have Visual Studio installed, you can open notepad, paste that snippet, save it as noop.c and in the command prompt use cl noop.c and it will output a noop.exe file in the same folder.

You may or may not have to browse to the Microsoft Visual Studio X.0 folder in Program Files first and run vcvarsall.bat from the command prompt.

1
  • 1
    You missed the part of the question that said "part of a Windows installation". Also, the semicolon is redundant.
    – Synetech
    Jun 12, 2016 at 23:26
0

doskey.exe does nothing and it is in the path by default: it is included on System32 on virtually all Windows systems.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .