找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 16326|回复: 1

[文本处理] [求助]删除+修改HIVEDEF.INF文本内容的批处理

[复制链接]
发表于 2010-12-12 22:15:56 | 显示全部楼层 |阅读模式
WINDOWS XP安装盘中有一个HIVEDEF.INF文件,里面有这么一段内容需要在批处理中修改:

HKCU,"Keyboard Layout\Preload","1",0x00000002,"00000804"
HKCU,"Keyboard Layout\Preload","2",0x00000002,"E00E0804"
HKCU,"Keyboard Layout\Preload","3",0x00000002,"E0010804"
HKCU,"Keyboard Layout\Preload","4",0x00000002,"E0030804"
HKCU,"Keyboard Layout\Preload","5",0x00000002,"E0040804"

批处理的工作目标:删除中间的三行,把第五行的"5"改成"2"。

以前搞过一个批处理,只是删除后三行:
for /f "delims= tokens=*" %%i in ('more %DestinationCD%\I386\HIVEDEF.INF') do (
        set n=1
        setlocal enabledelayedexpansion
        for /f "eol=[ delims=" %%j in (%MAKETOOLS%\INI\Clean_HIVEDEF.ini) do if "%%i"=="%%j" set n=0
        if !n! equ 1 echo %%i>>%DestinationCD%\I386\HIVEDEF.INF.TMP
        endlocal
)

使用了一个Clean_HIVEDEF.ini,里面记录了要删除的后三行。

现在要删除中间的三行修改第五行,同时又想不用那个外置的Clean_HIVEDEF.ini文件,直接操作HIVEDEF.INF,并且保留原文的空行。

修改文本的水平实在太菜了,搞了好多天没搞妥,没办法,只好请达人帮忙。

[ 本帖最后由 stance 于 2010-12-14 11:55 编辑 ]
发表于 2010-12-13 09:46:58 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=1* delims=:" %%a in ('findstr /n .* HIVESYS.INF') do if "%%b"=="" (echo/) else (
  3.         set/a a+=1
  4.         if !a!==1 echo %%b
  5.         if !a!==5 for /f "tokens=1-3* delims=," %%c in ("%%b") do echo %%c,%%d,"2",%%f
  6. ))>temp.h
  7. del /q HIVESYS.INF
  8. ren temp.h HIVESYS.INF
复制代码

评分

参与人数 1技术 +1 收起 理由
stance + 1 乐于助人 谢谢hanyeguxing! 很想把文本处 ...

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:00 , Processed in 0.025447 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表