[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 请教批处理怎样批量修改文本文件非指定内容?

同一目录下有key.ini 和01.ini -30.ini,一共31个文件,key.ini内容如下(一共15行):
key_AAA2643203=8888887933474184767148441
key_AAA2658059=8888888189469114921248441
key_AAA2645041=8888887933469084716348441
key_AAA2646222=8888887933474214741748441
key_AAA2646908=8888887933492134895148441
key_AAA2659022=8888888189469124741748441
key_AAA2654670=8888888189484434691048441
key_AAA2654607=8888888189484434869548441
key_AAA2654808=8888888189489554895148441
key_AAA2654950=8888888189492114690848441
key_AAA2655667=8888888189484444870148441
key_AAA2655853=8888888189489564767648441
key_AAA2657296=8888888189474224844848441
key_AAA2657431=8888888189479344716248441
key_AAA2658331=8888888189476794716248441
01.ini文件内容如下:
[work]
time=10
[tuxiang]
name=1024768
[kill]
pd=1
[user]
name=aaa
[Last]
EntryName=bohao
Save=1
keyName=AAA2643203
key=4737447933474184767148441
现需要把key.ini的内容逐行读取到单数的如:01.ini 03.ini 05.ini内修改最后的两行内容,请教大神们的写法~

保存为ansi格式,注意保护原文件。
  1. @echo off&setlocal enabledelayedexpansion
  2. set p=-1
  3. for /f "tokens=2,3 delims=_^=" %%i in (key.ini) do (
  4.   set /a p+=2
  5.   set w=00!p!
  6.   set w=!w:~-2!
  7.   findstr /iv "key" !w!.ini>>f.ini
  8.   echo keyName=%%i>>f.ini
  9.   echo key=%%j>>f.ini
  10.   move /y f.ini !w!.ini
  11. )
  12. pause
复制代码
目的,学习批处理

TOP

回复 2# hlzj88


   老大,如果01.ini 03.ini 05.ini的内容变成这样:
01.ini文件内容如下:
[work]
time=10
[tuxiang]
name=1024768
[kill]
pd=1
[user]
name=aaa
[Last]
EntryName=bohao
Save=1
UserName=AAA2643203
Password=4737447933474184767148441
最后两行的内容没有相同的如KEY的关键字,这种情况又怎么判断呢?

TOP

回复 3# psstudio


    群里大佬指点了一下,可以这样修改:
   findstr /v "UserName Password" !w!.ini>>f.ini
可以用两个关键字!受教了~

TOP

回复 2# hlzj88


    谢谢大佬指点! 你的代码最精简!效率很高!

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in ('dir /b /a-d *.ini^|findstr /x "[0-9][13579]\.ini"') do (
  3.     set /p str=
  4.     (for /f "tokens=1-2* delims=_=" %%i in ("!str!") do (
  5.         findstr /vil "keyName= key= UserName= Password=" "%%a"
  6.         echo,%%iName=%%j
  7.         echo,%%i=%%k
  8.     ))>temp
  9.     move /y "temp" "%%a"
  10. ))<key.ini
  11. pause
复制代码

TOP

回复 6# qixiaobin0715


又学到了一招for循环内set /p 的用法,谢谢

TOP

返回列表