'wmic' is not recognized as an internal or external command, operable program or batch file
I need to run this script I made. This batch should copy compiled program on STM32 Nucleo. It uses wmic to find Nucleo's virtual drive's letter by it's label:
@echo off
for /f %%D in ('wmic volume get DriveLetter^, Label ^| find "NODE_F446RE"') do set nucleo_drive=%%D
IF EXIST %D%\DETAILS.TXT ( IF EXIST main.bin ( @echo on xcopy main.bin %D% @echo off echo Copied main.bin on nucleo ) ELSE ( echo Binary not found. Run `mingw32-make` in this directory to compile the project. )
) ELSE ( echo Nucleo drive not found. If needed, edit the `find "NODE_F446RE"` part of this script to refference your nucleo volume name.
)But I get this error:
'wmic' is not recognized as an internal or external command, operable program or batch file.I ensured that Windows Management Instrumenation service is running. What else could be wrong?
14 Answers
This indicates that the wmic utility's directory is not found on your PATH. Open the advanced System Properties window (you can open the System page with Windows+Pause/Break) and on the Advanced tab, click Environment Variables. In the section for system variables, find PATH (or any capitalization thereof). Add this entry to it:
%SystemRoot%\System32\WbemNote that entries are delimited by semicolons.
2In my case, I had %SystemRoot%\System32\Wbem on the path already, but a recent USB device driver I installed additionally added C:\Windows\System32 to the end of my path, and this stopped Windows from finding the wmic command. When I removed the trailing C:\Windows\System32 from the path, wmic was found again.
When I was using C:\Windows\System32 in the path, I was getting the same warning while installing Tails operating system on an USB stick.
When I change this to: %SystemRoot%\System32\Wbem, everything gets sorted and the warning is gone.
If you're using Windows 11, Microsoft has removed WMIC from the latest Insider builds.
Instead, you should now use Powershell commands.
To list all WMI Powershell commands, you can run Get-Command -Noun WMI*.