Как я могу запустить несколько команд замены из одной строки командного файла - PullRequest
0 голосов
/ 14 сентября 2018

У меня минимум знаний PowerShell: (

Привет, у меня есть два возможных варианта замены текста из файла .ini, один из которых представляет собой пакет в стиле меню, где при выборе параметра будет выполнена команда.

Моя проблема: если я использую пакетный код, я могу изменить только известное разрешение, потому что я не знаю, как добавить несколько заменяющих действий, чтобы они работали в случае сбоя одного из них.

Код Powershell выполняет несколько команд замены, но я не знаю, как отредактировать его для использования в качестве пакетной команды (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

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Вы также можете поместить свой скрипт в файл и запустить его следующим образом:

powershell.exe -file My\FilePath.ps1

Вот раздел справки из исполняемого файла powershell:

PowerShell -Help

-File

Запускает указанный сценарий в локальной области («точка-источник»), чтобы функции и переменные, которые создает сценарий, были доступны в текущем сеансе.Введите путь к файлу скрипта и любые параметры.Файл должен быть последним параметром в команде, поскольку все символы, введенные после имени параметра «Файл», интерпретируются как путь к файлу сценария, за которым следуют параметры сценария.

0 голосов
/ 14 сентября 2018

Является ли одна (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...