【问题标题】:Getting node version via batch script通过批处理脚本获取节点版本
【发布时间】:2020-03-20 14:30:13
【问题描述】:
我正在学习 nodeJS 和批处理脚本,我想使用批处理脚本获取节点版本。
当前代码是这样的:
FOR /F "tokens=* USEBACKQ" %%F IN (`node --version`) DO (
SET NODE_VER=%%F
)
ECHO %NODE_VER%
pause
但我不明白为什么这不起作用。它只是在调用命令node --version 后冻结。我也尝试调用node -v,但行为相同。当用python --version 替换node --version 时,这个确切的命令有效。救命!
【问题讨论】:
标签:
node.js
batch-file
cmd
scripting
【解决方案1】:
cmd 命令总是先读取本地目录寻找匹配的命令,然后它会去环境%path% 搜索命令。在这种情况下,Node 存在于%path% 变量中,但您在本地目录中也有一个node.??? 文件,因此将被使用。因此,以下措施很重要:
切勿将批处理文件命名为与可执行文件相同的名称。即使用my_node_script.cmd
始终尝试在批处理文件 node.exe --version 中使用完整的可执行文件名称,如果可能,如果您在工作目录中需要重复名称,例如 node,请使用可执行文件的完整路径。比如:
"C:\Program Files\nodejs\node.exe" --version
或
"%ProgramFiles%\nodejs\node.exe" --version
【解决方案2】:
试试这个:
@ECHO OFF
FOR /F %%F IN ('node.exe --version') DO ECHO %%F
PAUSE
GOTO :EOF