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

[文本处理] 【已解决】批处理如何手动修改文本指定行的内容?

本帖最后由 ht512 于 2013-11-7 12:55 编辑

各位大哥大姐们:
首先感谢 @foxJL , @DAIC  的帮忙,刚才帖子没有描述清楚
我想处理一堆文本
文本第19行都是类似于:KeyFilename=董存瑞.id 或 KeyFilename=王五.id  或 KeyFilename=欧阳大哥.id
文本第20行都是类似于:COD=董存瑞.id 或 COD=王五.id  或 COD=欧阳大哥.id
文本第25行都是类似于:MON=董存瑞.id 或 COD=王五.id  或 COD=欧阳大哥.id
姓名每个字中间都需要加一个间隔符 &
最后达到的效果为:KeyFilename=&董&存&瑞.id 或 KeyFilename=&王&五.id  或 KeyFilename=&欧&阳&大&哥.id
                           COD=&董&存&瑞.id 或 COD=&王&五.id  或 COD=&欧&阳&大&哥.id
                           MON=&董&存&瑞.id 或 COD=&王&五.id  或 COD=&欧&阳&大&哥.id

能否实现直接输入整个姓名就可以修改呢?不用分几次单字次输入 希望大哥大姐帮帮忙。在一个批处理里同时修改19~20~25行的内容

拜托了!
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p var=请输入用户名:
  3. set /p var2=请输入用户名:
  4. set /p var3=请输入用户名:
  5. for /f "delims=" %%a in ('D:\123\ABC.ini"') do (
  6. set /a n+=1
  7. if !n! equ 1 (
  8. echo %%a>"GD:\123\ABC.ini"
  9. ) else (
  10. if !n! equ 19 (   
  11. echo KeyFilename=&%var%&%var2%&%var3%.id >>"D:\123\ABC.ini"
  12. ) else (
  13. echo.%%a>>"D:\123\ABC.ini"
  14. )
  15. )
  16. )
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 foxJL 于 2013-11-5 21:30 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. set/p user=请输入用户名:
  3. for /l %%i in (0,1,10) do (if not "!user:~%%i!"=="" set "user_2=!user_2!^&!user:~%%i,1!")
  4. for /f "delims=" %%a in ('dir /b /a-d *.ini') do (
  5.     set "n="
  6.     for /f "usebackq delims=" %%i in ("%%a") do (
  7.         set/a n+=1 & set "flag=1"
  8.         if !n! equ 19 (echo,KeyFilename=!user_2!&set "flag=")
  9.         if !n! equ 20 (echo,COD=!user_2!&set "flag=")
  10.         if !n! equ 25 (echo,MON=!user_2!&set "flag=")
  11.         if defined flag (echo,%%i)
  12.     )>>%%~na_2.ini
  13. )
  14. pause
复制代码
1

评分人数

TOP

谢谢你的分享,学习了。

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in ("_19=KeyFilename" "_20=COD" "_25=MON") do set "%%~a"
  3. set /p Name=输入第19、20、25行姓名,用空格隔开:
  4. for /f "tokens=1-3" %%a in ("%Name%") do (
  5.     set "a=%%a" & set "b=%%b" & set "c=%%c"
  6. )
  7. for /l %%i in (0 1 10) do (
  8.     if "!a:~%%i!" neq "" set "#19=!#19!&!a:~%%i,1!"
  9.     if "!b:~%%i!" neq "" set "#20=!#20!&!b:~%%i,1!"
  10.     if "!c:~%%i!" neq "" set "#25=!#25!&!c:~%%i,1!"
  11. )
  12. pushd "D:\123\"
  13. for /f "delims=" %%i in ('dir /a-d /b *.ini') do (
  14.     set "n="
  15.     (for /f "usebackq delims=" %%a in ("%%i") do (
  16.         set /a n+=1
  17.         if defined _!n! (
  18.             for %%b in (!n!) do echo,!_%%b!=!#%%b!.id
  19.         ) else echo,%%a
  20.     ))>"New_%%i"
  21. )
  22. pause
复制代码
1

评分人数

TOP

返回列表