¿Cómo designo un archivo específico para mi script de parcheo?

¿Cómo designo un archivo específico para mi script de parcheo?

Estoy creando un script por lotes que ubicará un archivo de texto y luego reemplazará una cadena especificada dentro del archivo. El único problema que tengo es configurar la ruta del archivo especificado. Intenté usar cdpara establecer la ruta pero parece que no hace nada. ¿El uso cdfuncionará o necesito usar parámetros diferentes o adicionales? Aquí está mi guión actual:

@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

Respuesta1

  1. Targetpath no tiene ningún efecto y es superfluo.
  2. Ya debería poder accederse a Powershell a través de una entrada de ruta.
  3. El script ps podría incluirse en un comando simple, sin necesidad de un archivo temporal.

:: 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%\""

información relacionada