Re: Bug with shell command !{cmd} using cmd.exe

Chainsaw <[email protected]> Thu, 18 Dec 2025 10:36:03 -0500
Newsgroups gmane.editors.vim
Message-ID <[email protected]>
On 2025-12-18 1:47 am, 'Jürgen Krämer' via vim_use wrote:
> Hi,
> 
> Chainsaw schrieb am 18.12.2025 um 06:25:
>> 
>> I just switched from Windows 10 to Windows 11, and found a strange bug
>> with Vim in Windows 11.
>> Steps to reproduce:
>> 1) execute command :!start c:\windows\system32\cmd.exe (or
>> :!c:\windows\system32\cmd.exe)
>> 2) in the opened cmd.exe window, cd to a directory that contains a 
>> .cmd
>> or .bat file, example cd c:\batch\test
>> 3) run a .cmd or .bat file, say test.cmd, you will get 'test.cmd' is 
>> not
>> recognized as an internal or external command, operable program or 
>> batch
>> file
>> 4) then in same window, run c:\batch\test\test.cmd and it will work ok
>> 
>> This only happens with a cmd.exe window opened from Vim using !.
>> 
>> Thanks
>> 
> have a look at
> 
>   :help $NoDefaultCurrentDirectoryInExePath
> 
> I don't know if there is a way to disable this behavior in Vim. You 
> might
> need to
> 
>   set NoDefaultCurrentDirectoryInExePath=
> 
> or
> 
>   set PATH=.;%PATH%
> 
> in your cmd or get into the habit of explicitly prepending ".\" to the
> names of executables from the current directory when you want to run 
> them,
> e.g.,
> 
>   .\my-program-from-here.exe param1 param2
> 
> 
> Regards,
> Jürgen
> 
> --
> ~
> ~
> ~
> :wq
> 
> --
The PATH variable does not matter for an executable if you are in the 
directory of the executable, or using the absolute path.  When a command 
is issued at the CMD prompt, the Operating System will first look for an 
executable file in the current folder, if not found it will scan %PATH% 
to find it.  In a CMD prompt window not launched from Vim, even if you 
null the path with 'PATH ;' or set "PATH=", any executable in the 
current directory will be found.

This odd behavior is only from a CMD window launched from Vim, and in 
Windwso 10 I did not have this problem, it just worked.
Anyway, you did give me an idea for a workaround.

This works:
!start c:\windows\system32\cmd.exe /k path \%path\%;.

I still would like to know why this happens in Windows 11 (I do consider 
this a bug because I should not have to include current directory in 
path).

Thanks

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion visit https://groups.google.com/d/msgid/vim_use/94d676b4f5cf0cb08809373f9d67587d%40fourbarlinkage.net.