更换Powershell中的多条线路

更换Powershell中的多条线路,powershell,Powershell,我正在使用此脚本替换文件中的文本(Powershell V.1) 但是如果我想替换多行代码,我如何制作脚本?我是这样想的: powershell -Command "(gc 'file.jnlp') -replace 'ruta_logo','logo/logo.png' -replace 'ruta_xsl','logo/xsl.xsl' ` -replace 'url_msg','url+msg'` -replace 'url_forest','url+forest'` -replace

我正在使用此脚本替换文件中的文本(Powershell V.1)

但是如果我想替换多行代码,我如何制作脚本?我是这样想的:

powershell -Command "(gc 'file.jnlp') -replace 'ruta_logo','logo/logo.png' 
-replace 'ruta_xsl','logo/xsl.xsl' `
-replace 'url_msg','url+msg'`
-replace 'url_forest','url+forest'`
-replace 'nombre_entidad','Nombre'`
-replace 'url_word','Word.exe' | out-file 'file2.jnlp'"

但它不起作用。所以我使用多个批处理文件来替换一行。谢谢

出于以下原因,我决定发布此批处理文件解决方案:

  • 服务器具有
    批处理文件
    标记
  • 最后一个OP的注释表明他想从.bat文件运行代码
  • 这些要点“由我解释”,因为解决这个问题的最佳解决方案是将所有代码保存在一个Batch.bat文件中

@如果(@code节==@Batch)@那么
@回音
cscript//nologo//E:JScript“%~F0”file2.jnlp
后藤:EOF
@结束
//JScript部分
Write(WScript.Stdin.ReadAll().replace(
/(ruta_logo)|(ruta_xsl)|(url_msg)|(url_forest)|(nombre_entidad)|(url_word)/g,
功能(o、A、B、C、D、E、F)
{return[“logo/logo.png”、“logo/xsl.xsl”、“url+msg”、“url+forest”、“Nombre”、“Word.exe”]
[[].concat(A,B,C,D,E,F).join().indexOf(o)]});

另外一个好处是,此解决方案应该比PowerShell one运行得更快(而且更简单)。

您在第一行的末尾缺少了一个反勾号。另外,如果仍要使用PowerShell,请从.ps1文件运行PowerShell代码,而不是将其作为命令字符串传递到
PowerShell.exe
。如果这不能解决问题,你需要更详细地描述“不工作”。示例输入以及预期和实际输出总是有用的。此外,Out文件可能会出现编码问题,因此您可能需要使用
-编码Ascii
。但不起作用并不能帮助我们确定您的问题。您真的在使用PowerShell v1.0吗?这就是您在运行
Get Host
时看到的内容?甚至不确定当时是否可以使用
Get Host
。@AnsgarWiechers感谢它在powershell ISE中起到了作用。但是如果我想把贝壳当作蝙蝠来运行。。。有可能吗?在批处理文件中不能以这种方式换行。
powershell -Command "(gc 'file.jnlp') -replace 'ruta_logo','logo/logo.png' 
-replace 'ruta_xsl','logo/xsl.xsl' `
-replace 'url_msg','url+msg'`
-replace 'url_forest','url+forest'`
-replace 'nombre_entidad','Nombre'`
-replace 'url_word','Word.exe' | out-file 'file2.jnlp'"
@if (@CodeSection == @Batch) @then

@echo off
cscript //nologo //E:JScript "%~F0" < file.jnlp > file2.jnlp
goto :EOF

@end

// JScript section

WScript.Stdout.Write(WScript.Stdin.ReadAll().replace(
        /(ruta_logo)|(ruta_xsl)|(url_msg)|(url_forest)|(nombre_entidad)|(url_word)/g,
function (o,A,B,C,D,E,F)
{return ["logo/logo.png","logo/xsl.xsl","url+msg","url+forest","Nombre","Word.exe"]
        [[].concat(A,B,C,D,E,F).join().indexOf(o)] }));