【发布时间】:2019-12-24 23:13:10
【问题描述】:
我正在将旧的批处理文件转换为 Powershell。在批处理文件中,SET 命令用于声明和设置多个变量,然后调用使用这些变量以及附加标志的可执行文件。我将如何在 Powershell 中执行此操作?
批处理文件代码摘录:
SET VAR1=VAL1
SET VAR2=VAL2
SET VAR3=VAL3
SET VAR4=VAL4
%DIRECTORY%\%SUBDIR%\EXECUTABLE.EXE -FLAG1 -FLAG2 -FLAG3
我首先尝试声明 Powershell 变量并使用 Start-Process 调用 exe,但可执行文件正在寻找特定的变量名。我不确定在这种情况下 exe 是否可以看到这些变量,但它不起作用。
$VAR1 = VAL1
$VAR2 = VAL2
$VAR3 = VAL3
Start-Process "$DRIVE\DIR\EXECUTABLE.exe -FLAG1 -FLAG2 -FLAG3"
我也尝试将多行命令传递给命令外壳,但未成功:
$Command = "CMD.exe /C
SET VAR1=VAL1
SET VAR2=VAL2
SET VAR3=VAL3
SET VAR4=VAL4
$DRIVE\$DIR\EXECUTABLE.exe -FLAG1 -FLAG2 -FLAG3
Invoke-Expression $Command
注意** 变量必须设置在多行上,即使我从 DOS 提示符运行 exe 也是如此。使用“&”(批处理)或“;” (Powershell)并在一行上传递所有变量不起作用。
【问题讨论】:
-
我想运行
c:\folder1\EXECUTABLE.exe -FLAG1 -FLAG2 -FLAG3是不可能的。 -
-FLAG1 -FLAG2 -FLAG3应该是-%VAR1% -%VAR2% -%VAR3%还是$VAR1 $VAR2 $VAR3还是与您的问题完全无关? -
不,它们是不同的值。设置变量,然后将一组不同的标志传递给可执行文件。
标签: powershell batch-file