Ich erstelle ein Batch-Skript, das eine Textdatei sucht und dann eine angegebene Zeichenfolge in der Datei ersetzt. Das einzige Problem, das ich habe, ist das Festlegen des Pfads der angegebenen Datei. Ich habe versucht, cd
den Pfad mit festzulegen, aber es scheint nichts zu bewirken. Funktioniert die Verwendung cd
oder muss ich andere oder zusätzliche Parameter verwenden? Hier ist mein aktuelles Skript:
@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
Antwort1
- Targetpath hat keine Auswirkung und ist überflüssig.
- Powershell sollte bereits über einen Pfadeintrag erreichbar sein.
- Das PS-Skript könnte in einen einfachen Befehl eingebettet werden, eine temporäre Datei wäre nicht erforderlich.
:: 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%\""