MyBatScript.bat:
PowerShell.exe "call MyPowershellScript.ps1"
%Tag% = NotSet
%CommitId% = NotSet
MyPowershellScript.ps1:
REM override the NotSet default value of tag and commitId defined in the MyBatScript.bat
$longVersion = git describe --long
$versionTokenList = $longVersion.Split('-')
%Tag% = $versionTokenList[0]
%CommitId% = $versionTokenList[-1]
我想将包装批处理文件调用的powershell脚本中的Tag和CommitId值写入2个批处理变量。
我该怎么做?目前上面的代码不起作用......
注意:我知道你们会问我为什么要将旧球棒与powershell混合使用。 我没有这样做......其他人的混乱我只需要修理垃圾,我真的需要这样做...感谢您的耐心和理解。
答案 0 :(得分:0)
%varname%
是变量的批处理语法。它在PowerShell脚本中无效。将值从PowerShell脚本返回到父批处理脚本的规范方法是回显PowerShell脚本中的值(例如,以分号分隔的字符串):
$longVersion = git describe --long
'{0};{1}' -f $longVersion.Split('-')[0,-1]
并在批处理脚本中使用循环处理输出:
@echo off
for /f "tokens=1,2 delims=;" %%a in (
'PowerShell.exe -File "MyPowershellScript.ps1"'
) do (
set "Tag=%%a"
set "CommitId=%%b"
)