Como designo um arquivo específico para o meu script de patch?

0

Estou fazendo um script em lote que localizará um arquivo de texto e substituirá uma string especificada no arquivo. O único problema que estou tendo é definir o caminho do arquivo especificado. Eu tentei usar cd para definir o caminho, mas parece não fazer nada. Usarei cd work ou precisarei usar parâmetros diferentes ou adicionais? Aqui está o meu script atual:

@echo off
SET TARGETPATH= "%TARGETPATH%"

setlocal enableextensions disabledelayedexpansion

cd "%TARGETPATH%"
set search=Hello
set replace=Goodbye
set textFile=Test.txt

:PowerShell
SET PSScript=%temp%\~tmpStrRplc.ps1
ECHO (Get-Content "%~dp0%textFile%").replace("%search%", "%replace%") ^| Set-Content "%~dp0%textFile%">"%PSScript%"

SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"
EXIT

:END
    
por Mr. Mendelli 14.04.2018 / 08:31

1 resposta

1
  1. O Targetpath não tem nenhum efeito e é supérfluo.
  2. O Powershell já deve estar acessível por meio de uma entrada de caminho.
  3. O script ps pode ser agrupado em um comando simples, sem necessidade de um arquivo temporário.
:: Q:\Test18\SU_1313967.cmd
@echo off
Setlocal EnableExtensions DisableDelayedExpansion

set search=Hello
set replace=Goodbye
set "textFile=%~dp0Test.txt"

Powershell -NonI -NoP -C "(GC \"%textFile%\").replace(\"%search%\", \"%replace%\") | SC \"%textFile%\""
    
por 14.04.2018 / 18:36