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 cd
para establecer la ruta pero parece que no hace nada. ¿El uso cd
funcionará 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
- Targetpath no tiene ningún efecto y es superfluo.
- Ya debería poder accederse a Powershell a través de una entrada de ruta.
- 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%\""