如何从一行批处理文件中运行多个替换命令

问题描述 投票:0回答:2

我对powershell的了解最少甚至没有:(

您好我有两个可能的选项来替换.ini文件中的文本,一个是菜单式批处理,选择一个选项将执行命令。

我的问题是:如果我使用批处理代码,我只能更改已知的分辨率,因为我不知道如何添加多个替换操作,以便在失败时它们起作用。

Powershell代码执行MULTIPLE替换命令,但我不知道如何编辑它以将其用作批处理命令(powershell -command等)

先感谢您 :)

批处理脚本:

@echo off
set ffile='resolutions.ini'
set HDReady='/resolution:1280,720'
set FullHD='/resolution:1920,1080'
set QuadHD='/resolution:2560,1440'
set UltraHD='/resolution:3840,2160'
powershell -Command "(gc %ffile%) -replace %hdready%, %fullhd% | Out-File %ffile% -encoding utf8"

Powershell脚本:

$original_file = 'path\resolutions.ini'
$destination_file =  'path\resolutions.ini'
(Get-Content $original_file) | Foreach-Object {
    $_ -replace '/resolution:1280,720', '/resolution:1920,1080' `
       -replace '/resolution:2560,1440', '/resolution:1920,1080' `
       -replace '/resolution:3840,2160', '/resolution:1920,1080' 
    } | Set-Content $destination_file
powershell batch-file
2个回答
0
投票

你真正想要的是一(1)行吗?

(Get-Content 'path\resolutions.ini') | Foreach-Object {$_ -replace '/resolution:1280,720', '/resolution:1920,1080' -replace '/resolution:2560,1440', '/resolution:1920,1080' -replace '/resolution:3840,2160', '/resolution:1920,1080'} | Set-Content 'path\resolutions.ini'

要么

$original_file = 'path\resolutions.ini'; $destination_file = 'path\resolutions.ini'; (Get-Content $original_file) | Foreach-Object {$_ -replace '/resolution:1280,720', '/resolution:1920,1080' -replace '/resolution:2560,1440', '/resolution:1920,1080' -replace '/resolution:3840,2160', '/resolution:1920,1080'} | Set-Content $destination_file

0
投票

您也可以将脚本放在一个文件中并按原样运行:

powershell.exe -file My\FilePath.ps1

这是powershell可执行文件的帮助部分:

PowerShell - 帮助

-文件

在本地作用域(“dot-sourced”)中运行指定的脚本,以便脚本创建的函数和变量在当前会话中可用。输入脚本文件路径和任何参数。文件必须是命令中的最后一个参数,因为在File参数名称后键入的所有字符都被解释为脚本文件路径,后跟脚本参数。

© www.soinside.com 2019 - 2024. All rights reserved.