使用 Windows Shell 修改特定行后的行

使用 Windows Shell 修改特定行后的行

我正在尝试编辑我所搜索行后面的一行。使用的文件实际上是通过 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- 已处理脚本

相关内容