cmd-shim icon indicating copy to clipboard operation
cmd-shim copied to clipboard

[BUG] .cmd @echo off

Open cshorler opened this issue 3 years ago • 0 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

Current Behavior

this is similar to what is raised here (never resolved): https://github.com/npm/npm/issues/19681

At a Windows command prompt running npm -v with npm@latest seems to hang. Typing echo on brings back the prompt as described in the above bug.

This seems to contradict Microsoft documentation for @echo off, that remarks (to quote) "If used in a batch file, echo on and echo off don't affect the setting at the command prompt."

I see this behaviour on Windows 10.

If I patch the npm.cmd file like this, it behaves well:

@SETLOCAL
@FOR /f "tokens=1,2,3 delims=. " %%G IN ('ECHO') DO @SET _echo=%%I
@ECHO off

GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start

CALL :find_dp0

IF EXIST "%dp0%\node.exe" (
  SET "_prog=%dp0%\node.exe"
) ELSE (
  SET "_prog=node"
  SET PATHEXT=%PATHEXT:;.JS;=;%
)

ENDLOCAL & (CALL) || TITLE %COMSPEC% & "%_prog%" "%dp0%\node_modules\npm\bin\npm-cli.js" %* & ECHO %_echo%

Expected Behavior

normal exit, no change to current prompt setting.

Steps To Reproduce

  1. Start cmd prompt
  2. Run npm -v at the prompt
  3. appears to hang, echo on fixes

Environment

  • npm: 8.12.2
  • Node: v16.14.2
  • OS: Windows
  • platform: Microsoft Windows [Version 10.0.19044.1645]

cshorler avatar Jun 18 '22 18:06 cshorler