将变量传递给批处理文件

时间:2014-08-03 18:08:47

标签: windows batch-file powershell cmd

我有一个要求,我需要使用批处理文件安装应用程序。 当我运行这个批处理文件时,它要求输入,批处理文件在内部调用一个询问输入的powershell脚本,如果我点击某个输入的回车键,它将采用默认值。

任何人都可以让我知道如何将所有输入存储在一个文件中并将其传递给批处理文件,它也应该支持PowerShell脚本以及默认值。

BATCHFILE.cmd

@echo off
setlocal EnableDelayedExpansion
set scriptsPath=%~dp0
set scriptsPathShort=%~dps0
set psPath=%windir%\System32\WindowsPowerShell\v1.0\powershell.exe

:params
set Path=%~1
set psVersion=0

if "!psVersion!" == "2.0" "!psPath!" -version !psVersion! -command "!scriptsPathShort!install\install-driver.ps1" '!Path!' '****'
if not !errorlevel! == 0 goto error 
goto end    

 install-driver.ps1
param 
(
    [string] $scriptsBasePath = $(throw "Missing parameter: scriptsBasePath"),
    [string] $Path = $(throw "Missing parameter: packagePath"),
    [string] $packageRootFolder = $(throw "Missing parameter: packageRootFolder")
)
$configFileName = "install.config"

**install.config**

<Param name="ClientDir" required="1"
                label="Client Directory" 
                desc="Choose a unique name which will be used by the application to create folder in which client files will be stored" />

        <Param mode="adv" name="lPswdEncryptionMode" required="1" defaultValue="2" 
                label="Password Encryption Mode" /> 
<Param componentType="webserver" name="WebsiteName" required="1" defaultValue="Default Web Site" 
                label="Website Name" 
                desc="Enter site name under which the website component will be installed" cloud="1" />

这只是一段代码,只是为了有个主意。 它调用配置文件,其中我有几个参数。 任何人都可以告诉我如何传递变量吗?

1 个答案:

答案 0 :(得分:1)

以下是我将config / ini文件中的变量收集到powershell中的方法。

$SETTINGS = Get-Content .\install.config

$scriptsBasePath = $SETTINGS[0]
$Path = $SETTINGS[1]
$packageRootFolder = $SETTINGS[2]

如果install.config不在同一目录中,请替换完整路径。