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

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

Estou criando 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 cdpara definir o caminho, mas parece não fazer nada. O uso funcionará cdou preciso usar parâmetros diferentes ou adicionais? Aqui está 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

Responder1

  1. 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:\Test\2018\04\14\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%\""

informação relacionada