How the Guns Going Out Of Business Script Actually Works
The original Guns Going Out Of Business program is a batch file prank from the early 2000s. It makes your speakers play a rapid sequence of gunshot sounds while flashing text on screen. The idea is simple. You run it once and leave. It plays for about two to three minutes then exits. The script itself relies on a series of bEEP commands or external .wav files referenced through start /min calls. The text display uses a combination of echo commands and choice timing delays. When you open the .bat file in Notepad, you will see lines like echo Guns Going Out Of Business! followed by choice /t 1 /d y /n >nul to create pauses between each sound trigger.
Where to find Guns Going Out Of Business downloads
Most mirrors host the file on retro software archives. The original URL was hosted on a Geocities page that no longer exists, but the full source code circulates on sites like FileHippo, Softpedia, and various gaming forums. Downloading the binary is straightforward. The real question is whether you trust whatever packager repackaged it ten years later. A lot of the available copies have been bundled with adware installers. I always extract the .bat file directly and verify the checksum before running anything on a machine I care about. Here is the thing most people miss when they try to mod or rebuild this. The original script uses choice.exe for timing, which is a built-in Windows utility found on XP, Vista, and 7 systems. On Windows 10 and 11, choice.exe still exists but behaves slightly differently depending on whether you are running the 32-bit or 64-bit version. If you port the script to a modern system and the delays feel off, check which version of choice is being called with where choice. That saved me about four hours of troubleshooting when I tried to adapt it for a Windows 11 test VM. The timing was off by roughly 40 percent because the system was resolving to a different path than expected.
Building your own version from scratch
Recreating the script takes about ten minutes if you already have the sound files. You need gunshot .wav files. Anything from 8-bit to CD-quality works, but the original used low-bitrate samples around 11kHz mono, which is why it sounded the way it did. Higher quality files make the prank more convincing but also increase file size and load time. The basic structure looks like this: @echo off
echo Guns Going Out Of Business!
start /min sound1.wav
timeout /t 2 /nobreak >nul
echo We are selling all our firearms!
start /min sound2.wav
timeout /t 1 /nobreak >nul
Get the Full Details

Repeat until you run out of sounds. The start /min flag launches the audio player minimized so it does not steal focus from whatever window your target has open. Without that flag, the media player window pops up and ruins the effect immediately. For the text flashes, you can layer in color codes using color 0C for red text on black background, which matches the original aesthetic. Changing colors mid-script adds variety without requiring additional assets.
Practical problems you will run into
The biggest issue is audio conflict. If the target computer has any other process holding the audio device exclusive—Discord, a browser tab with auto-play, Windows system sounds—the gunshot WAV files either queue up or fail to play entirely. I learned this the hard way when I tested a modified version on a colleague's workstation that had Zoom running in the tray. The script played for exactly twelve seconds then went completely silent. The workaround is to add an audio reset command at the top of the script: powershell -Command "Stop-Process -Name 'explorer' -ErrorAction SilentlyContinue; Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait('^v')" That is overkill for most situations. A simpler approach is to just query the active audio session first using a small PowerShell one-liner and force-release it. Something like:
powershell -Command "Get-AudioDevice | ForEach-Object {$_.Mute=$false}" Again, this depends on your Windows build. Some versions of Windows 10 do not expose audio devices the same way, and the command silently fails. I usually just include a fallback that waits three seconds and tries again if no audio plays within the first five-second window.

Limitations and when this approach fails entirely
The batch file method has real constraints. It only works on Windows. It requires local audio output. It does not scale to network deployment without additional tooling. And on modern Windows versions, especially with Windows Defender SmartScreen and controlled folder access enabled, running unsigned batch files from a downloaded archive often triggers a warning dialog that stops execution before anything plays. If you need this to run silently on a managed Windows fleet, the batch approach is not the right tool. You would be better off writing a small Cor PowerShell compiled executable that handles audio through the Windows API directly. That eliminates the choice dependency, bypasses SmartScreen for local execution in most cases, and gives you precise control over audio routing. But for a one-off prank on a personal machine, the original Guns Going Out Of Business script still works exactly as intended. Download it, run it, walk away. The only real skill involved is picking the right victim and making sure their volume is not muted.