パッチ適用スクリプトに特定のファイルを指定するにはどうすればいいですか?

パッチ適用スクリプトに特定のファイルを指定するにはどうすればいいですか?

テキスト ファイルを検索し、ファイル内の指定された文字列を置き換えるバッチ スクリプトを作成しています。 唯一の問題は、指定されたファイルのパスを設定することです。 を使用して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

  1. Targetpath は効果がなく、不要です。
  2. Powershell は、パス エントリ経由ですでにアクセス可能であるはずです。
  3. 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%\""

関連情報