![使用 Windows Shell 修改特定行后的行](https://linux22.com/image/1605369/%E4%BD%BF%E7%94%A8%20Windows%20Shell%20%E4%BF%AE%E6%94%B9%E7%89%B9%E5%AE%9A%E8%A1%8C%E5%90%8E%E7%9A%84%E8%A1%8C.png)
我正在尝试编辑我所搜索行后面的一行。使用的文件实际上是通过 LGPO.exe 解析 registry.pol 生成的。以下是文本文件的示例:
Computer
Software\Policies\Microsoft\Windows\Personalization
NoChangingLockScreen
DELETE
Computer
Software\Policies\Microsoft Services\AdmPwd
PasswordComplexity
DWORD:4
Computer
Software\Policies\Microsoft Services\AdmPwd
PasswordLength
DWORD:9
Computer
Software\Policies\Microsoft Services\AdmPwd
PasswordAgeDays
DWORD:24
我正在尝试搜索关键字“PasswordComplexity”,之后我会查看下一行以编辑数据(本例中为“DWORD:4”),例如改为“DWORD:12”。无法简单地搜索关键字“DWORD:4”,因为另一个设置可能具有密钥对值,并且它会覆盖其他设置。如何编辑关键字下一行的特定行?
答案1
[文件.bat]
@echo off
SetLocal EnableDelayedExpansion
cls
set tmp=
IF EXIST file2.txt DEL file2.txt > nul
FOR /F %%a in (file.txt) do (
IF "!tmp!"=="PasswordComplexity" (
IF "%%a"=="DWORD:4" (
SET tmp=DWORD:12
) ELSE (
SET tmp=%%a
)
) ELSE (
SET tmp=%%a
)
IF "!tmp!"=="Computer" echo.>>file2.txt
echo !tmp! >> file2.txt
)
file.txt
- 源脚本
file2.txt
- 已处理脚本