PowerShell is the right default for automation on modern Windows. I’m not here to argue otherwise. I am here to argue that CMD still owns one narrow, high-frequency job: dead-simple file operations on machines you don’t control.
If you’ve ever onboarded onto a laptop where PowerShell scripts are blocked, module galleries are unreachable, and “just install 7” is a ticket queue fantasy, you already know the plot.
The scenario that keeps happening
- Vendor support session.
- Kiosk or lab image.
- Break-glass admin account with ancient defaults.
- “Can you just rename these twenty folders and copy the logs?”
You have cmd.exe, Explorer, and maybe Notepad. That’s the toolkit. Performance art with ForEach-Object can wait.
Why CMD wins this niche
Startup cost is zero. No policy negotiation. No profile. No “modules not found.”
The verbs match the job. copy, xcopy/robocopy (okay, robocopy is its own legend), move, ren, del, mkdir, rmdir, dir. For “make the files be over there,” this vocabulary is enough.
Transcripts are readable to everyone. A support engineer pasting CMD into a ticket doesn’t need to explain object formatting. The next person can re-run it.
Example that stays boring on purpose:
mkdir C:\Temp\incident-042
robocopy C:\App\logs C:\Temp\incident-042 *.log /S /MAXAGE:2
ren C:\Temp\incident-042 app-logs-2026-09-29
No genius. Ship the logs.
The traps to respect (so the niche doesn’t bite you)
CMD’s simplicity is real. So are its footguns:
- Quoting paths with spaces is mandatory hygiene.
-
delvsrmdirvs wildcards — know what recursion you asked for. -
copyoverwrites with less ceremony than some people expect. - Encoding / code page can garble non-ASCII names; stick to boring names when you can.
Underrated ≠ under-cautious.
What this is not
This is not “CMD is fine for CI.” It is not “skip PowerShell.” It is not culture-war bait about shells.
It’s operational triage: match tool weight to constraint weight. On a locked machine with a ten-minute maintenance window, CMD file ops are often the shortest path between “broken” and “documented.”
Teaching angle
Windows-first juniors get told CMD is obsolete, then day three on a retail image they need it. That whiplash creates shame. Better curriculum: teach CMD as a constrained toolkit with a clear job description, then graduate to PowerShell for structure and scale.
A 60-second playbook I actually reuse
@echo off
setlocal
set STAMP=%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%
mkdir "C:\Temp\collect-%STAMP%" 2>nul
robocopy "C:\App\logs" "C:\Temp\collect-%STAMP%" *.log *.txt /S /R:1 /W:1
echo Exit: %ERRORLEVEL%
Notes for humans: robocopy exit codes are richer than 0/1—read them before you panic. Quoting protects spaces. 2>nul on mkdir is optional sugar, not a substitute for checking outcomes when the directory is load-bearing.
Respect the niche boundary
The moment you need JSON, REST, remoting, or testable functions, graduate. CMD’s underrated status comes from scope discipline, not from pretending it’s a full automation platform.
Praise without nostalgia
I like power tools. I also like finishing a ten-minute maintenance window. CMD’s underrated job is the latter. If that sentence makes a PowerShell purist twitch, good—hold the nuance. We’re arguing about fitness for constraint, not about which shell deserves a fan club.
I keep a lane for those drills—file ops under friction—in CMD Master, because “obsolete” tools that still appear in incidents deserve rehearsal.
Discuss: When did a “legacy” shell save a locked-down session for you—and what would you refuse to still do in CMD?
Top comments (0)