cmd 设置环境并运行脚本

问题描述 投票:0回答:2

我想从 powershell 运行一个批处理脚本,在运行之前需要一个环境变量。

这是我尝试过的。

cmd.exe /c SET ENV_BASE_DIR='C:\Program Files\XY\Z 12.3' "&" "C:\Users\Admin\Desktop\file.bat /d /p"

windows powershell batch-file
2个回答
1
投票

为了避免引用令人头疼的问题,请考虑(暂时)从 PowerShell 设置环境变量,然后直接调用批处理文件:

$env:ENV_BASE_DIR = 'C:\Program Files\XY\Z 12.3'

C:\Users\Admin\Desktop\file.bat /d /p

$env:ENV_BASE_DIR = $null # remove the env. var again.

如果你确实想用

cmd.exe
一行字来解决这个问题:

cmd.exe /c set ENV_BASE_DIR='C:\Program Files\XY\Z 12.3' `& C:\Users\Admin\Desktop\file.bat /d /p
  • &
    元字符更简单地使用 PowerShell 的转义字符
    `
    (反引号)进行转义。

  • 批处理文件路径及其参数作为单独的参数传递。


至于你尝试过的:

最终,命令行的唯一问题是您在

C:\Users\Admin\Desktop\file.bat /d /p
作为一个整体 加上了双引号,这导致
cmd.exe
将整个字符串视为可执行路径。


0
投票

我用在

powershell

$env:NODE_ENV="development"; yarn run db:migrate up

注意,在这种情况下,在当前终端中,变量将被全局设置,而不仅仅是此命令。如果你打开另一个终端,这个变量将不存在

© www.soinside.com 2019 - 2024. All rights reserved.