我正在製作一個批次腳本,它將定位一個文字文件,然後替換該文件中的指定字串。我遇到的唯一問題是設定指定文件的路徑。我嘗試過cd
設定路徑,但似乎沒有任何作用。使用有效cd
還是我需要使用不同或額外的參數?這是我目前的腳本:
@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
答案1
- Targetpath 沒有任何作用且是多餘的。
- Powershell 應該已經可以透過路徑條目存取。
- ps 腳本可以包含在一個簡單的命令中,不需要臨時檔案。
:: 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%\""