如何读取写在.bat文件中的powershell命令中的变量。

问题描述 投票:1回答:1

我有一个蝙蝠文件,我执行它,它工作得很好。

SET RPPROPERTIESPATH='C:\work\filepath.txt' //contains the word 'string1'

powershell -Command "(gc %RPPROPERTIESPATH%) -replace 'string1', 'string2' | Out-File -encoding ASCII %RPPROPERTIESPATH%"

但我想让替换参数来自于一个变量,就像这样。

SET RPPROPERTIESPATH='C:\work\filepath.txt' //contains the word 'string1'
SET STRINGTOREPLACE='string3' 

 powershell -Command "(gc %RPPROPERTIESPATH%) -replace 'string1', %STRINGTOREPLACE% | Out-File -encoding ASCII %RPPROPERTIESPATH%"

这是行不通的,我应该如何让它工作?

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

设置变量 使用 set "varname=varvalue" 句法和 转引 喜欢 "%varname%" (对于 cmd)或像 '%varname%' (对于 PowerShell). 然后,你的代码片段应该如下。

SET "RPPROPERTIESPATH=C:\work\filepath.txt" //contains the word 'string1'
SET "STRINGTOREPLACE=string3"

powershell -Command "(gc '%RPPROPERTIESPATH%') -replace 'string1', '%STRINGTOREPLACE%' | Out-File -encoding ASCII '%RPPROPERTIESPATH%'"

0
投票

一旦我排除了 "像这样",似乎就可以了。

SET STRINGTOREPLACE=string3

 powershell -Command "(gc %RPPROPERTIESPATH%) -replace 'string1', '%STRINGTOREPLACE%' | Out-File -encoding ASCII %RPPROPERTIESPATH%"
© www.soinside.com 2019 - 2024. All rights reserved.