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

[文本处理] 含有引号等号等的文本用批处理如何修改、追加需要的字符?

[复制链接]
发表于 2010-3-29 16:35:52 | 显示全部楼层 |阅读模式
问题1:现有文本文件如下,请问如何用批处理修改红色部分
DetachedProgram="%SystemDrive%\Driver\Drvs.exe"
productid="kg7g9-67khv-4fqkv-4dyxk-bhqtj"
,依次为
DetachedProgram="%SystemDrive%\Drivers\setup.exe" ;
ProductKey="aaaaa-aaaaa-aaaaa-aaaaa-aaaaa"
  1. [data]
  2. msdosinitiated="1"
  3. floppyless="1"
  4. AutoPartition="0"
  5. UseSignatures="yes"
  6. InstallDir="\WINDOWS"
  7. winntupgrade="no"
  8. win9xupgrade="no"
  9. Win32Ver="a280105"
  10. uniqueid="C:\WINDOWS\OAI"
  11. OriSrc="D:"
  12. OriTyp="5"
  13. unattendswitch=yes
  14. [Unattended]
  15. UnattendMode=FullUnattended
  16. FileSystem=*
  17. OemSkipEula=Yes
  18. OemPreinstall=Yes
  19. TargetPath=\WINDOWS
  20. UnattendSwitch="Yes"
  21. WaitForReboot="No"
  22. NonDriverSigningPolicy="Ignore"
  23. DriverSigningPolicy="Ignore"
  24. Hibernation="No"
  25. unused=unused
  26. [SystemRestore]
  27. DisableSR=1
  28. CreateFirstRunRp=0
  29. [GuiUnattended]
  30. AdminPassword=*
  31. TimeZone=210
  32. OEMSkipRegional=1
  33. OemSkipWelcome=1
  34. DetachedProgram="%SystemDrive%\Driver\Drvs.exe"
  35. [UserData]
  36. ProductKey="kg7g9-67khv-4fqkv-4dyxk-bhqtj"
  37. FullName=User
  38. ComputerName=*
  39. productid="kg7g9-67khv-4fqkv-4dyxk-bhqtj"
  40. [RegionalSettings]
  41. LanguageGroup=1,10
  42. Language="0804"
  43. [Networking]
  44. InstallDefaultComponents="Yes"
  45. [Identification]
  46. JoinWorkgroup="WORKGROUP"
  47. [OobeProxy]
  48. Enable=1
  49. Flags=9
  50. Autodiscovery_Flag=0
复制代码
问题二,如何用批处理,在修改红色部分TargetPath=\WINDOWS,并在起下一行加入两行,内容为
  1. TargetPath="\WinXP\Windows"
  2. ProgramFilesDir="\WinXP\Program Files"
  3. CommonProgramFilesDir="\WinXP\Program Files\Common Files"
复制代码



  1. [data]
  2. msdosinitiated="1"
  3. floppyless="1"
  4. AutoPartition="0"
  5. UseSignatures="yes"
  6. InstallDir="\WINDOWS"
  7. winntupgrade="no"
  8. win9xupgrade="no"
  9. Win32Ver="a280105"
  10. uniqueid="C:\WINDOWS\OAI"
  11. OriSrc="D:"
  12. OriTyp="5"
  13. unattendswitch=yes
  14. [Unattended]
  15. UnattendMode=FullUnattended
  16. FileSystem=*
  17. OemSkipEula=Yes
  18. OemPreinstall=Yes
  19. TargetPath=\WINDOWS
  20. UnattendSwitch="Yes"
  21. WaitForReboot="No"
  22. NonDriverSigningPolicy="Ignore"
  23. DriverSigningPolicy="Ignore"
  24. Hibernation="No"
  25. unused=unused
  26. [SystemRestore]
  27. DisableSR=1
  28. CreateFirstRunRp=0
  29. [GuiUnattended]
  30. AdminPassword=*
  31. TimeZone=210
  32. OEMSkipRegional=1
  33. OemSkipWelcome=1
  34. DetachedProgram="%SystemDrive%\Driver\Drvs.exe"
  35. [UserData]
  36. ProductKey="kg7g9-67khv-4fqkv-4dyxk-bhqtj"
  37. FullName=User
  38. ComputerName=*
  39. productid="kg7g9-67khv-4fqkv-4dyxk-bhqtj"
  40. [RegionalSettings]
  41. LanguageGroup=1,10
  42. Language="0804"
  43. [Networking]
  44. InstallDefaultComponents="Yes"
  45. [Identification]
  46. JoinWorkgroup="WORKGROUP"
  47. [OobeProxy]
  48. Enable=1
  49. Flags=9
  50. Autodiscovery_Flag=0
复制代码

[ 本帖最后由 zpcoolfly 于 2010-3-29 16:42 编辑 ]
 楼主| 发表于 2010-3-30 09:23:06 | 显示全部楼层
斑竹可以进来帮帮忙吗
发表于 2010-3-30 09:41:32 | 显示全部楼层
  1. @echo off
  2. cd.>b.txt
  3. for /f "delims== tokens=1*" %%a in (1.txt) do 2>nul call :%%a %%a|| call :out %%a %%b
  4. goto :eof


  5. :TargetPath
  6. echo TargetPath="\WinXP\Windows">>b.txt
  7. echo ProgramFilesDir="\WinXP\Program Files">>b.txt
  8. echo CommonProgramFilesDir="\WinXP\Program Files\Common Files">>b.txt
  9. exit /b 0
  10. goto :eof

  11. :DetachedProgram
  12. echo DetachedProgram="%SystemDrive%\Drivers\setup.exe">>b.txt
  13. exit /b 0
  14. goto :eof

  15. :ProductKey
  16. echo ProductKey="kg7g9-67khv-4fqkv-4dyxk-bhqtj">>b.txt
  17. exit /b 0
  18. goto :eof

  19. :productid
  20. echo productid="kg7g9-67khv-4fqkv-4dyxk-bhqtj">>b.txt
  21. exit /b 0
  22. goto :eof

  23. :out
  24. if not %2.==. echo %1=%2>>b.txt & goto :eof
  25. echo %1 >>b.txt
  26. goto :eof
复制代码

[ 本帖最后由 caruko 于 2010-4-16 08:13 编辑 ]
发表于 2010-3-30 09:54:55 | 显示全部楼层
按上面代码,你可以写出很多替换条件,要输出什么随你..
发现下面2行,如果>>前没有空格,echo 到文本会出错...
Flags=9
Autodiscovery_Flag=0

[ 本帖最后由 caruko 于 2010-3-30 09:56 编辑 ]
 楼主| 发表于 2010-3-30 12:52:32 | 显示全部楼层
我先试试看,谢谢楼上
发表于 2010-4-15 17:26:22 | 显示全部楼层
  1. @echo off 2>输出文件.txt
  2. (for /f "tokens=1* delims==" %%i in (原来.txt) do if "%%j"=="" (echo.%%i) else (set "k=%%j"
  3. setlocal enabledelayedexpansion
  4. if /i "%%i"=="DetachedProgram" set "k=对应修改后的内容"
  5. if /i "%%i"=="productid" set "k=对应修改后的内容"
  6. if /i "%%i"=="TargetPath" set "k=对应修改后的内容"&set a==
  7. echo.%%i=!k!
  8. if defined a echo.要插入的第一行内容&echo.要插入的第二行内容
  9. Endlocal))>>输出文件.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 02:07 , Processed in 0.009801 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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