![如何为我的修补脚本指定特定文件?](https://linux22.com/image/1558614/%E5%A6%82%E4%BD%95%E4%B8%BA%E6%88%91%E7%9A%84%E4%BF%AE%E8%A1%A5%E8%84%9A%E6%9C%AC%E6%8C%87%E5%AE%9A%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我正在编写一个批处理脚本,它将定位一个文本文件,然后替换文件中的指定字符串。我遇到的唯一问题是设置指定文件的路径。我尝试使用来设置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%\""