|  | 
 
| fzfchao 初级用户
 
   
 
 
 
 积分 37
 发帖 18
 注册 2007-1-8
 状态 离线
 | 
| 『楼 主』:
 求一个修改ini文件的批处理
 
使用 LLM 解释/回答一下 
 
 
Config.ini文件中有个路径:
 [Other]
 LanguageID=2052
 Last=39155
 BossKey=Shift+Ctrl+Z
 [network]
 OutLocalTcpPort=3938
 OutLocalUdpPort=4523
 LocalTcpPort=3044
 LocalUdpPort=2734
 MaxAppPeerCount=25
 MaxConnectPendingCount=50
 Upnp=1
 WMPPath=E:\MPUI\MPUI.exe
 RMPath=E:\MPUI\MPUI.exe
 [network_BandWidth]
 CustomBandWidth=0
 MaxDnBandWidth=1
 MaxUpBandWidth=1024
 [network_PeerAgent]
 PeerAgent=0
 PeerAgentType=
 PeerAgentServerName=
 
 
 如何用批处理把其中
 WMPPath=E:\MPUI\MPUI.exe
 RMPath=E:\MPUI\MPUI.exe
 
 中的路径E:\MPUI\MPUI.exe修改为%TP%\MPUI\MPUI.exe
 (%TP%\MPUI\MPUI.exe为相对路径,要先转为绝对路径后再修改到INI文件中)
 
 
 
 
 |  | 
|  2007-4-3 10:34 |  | 
|  | 
 
| lxmxn 版主
 
         
 
 
 积分 11386
 发帖 4938
 注册 2006-7-23
 状态 离线
 | 
| 『第 2 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
 @Echo Off&SetLocal EnableDelayedExpansion
 ::这里设置TP变量的值!
 Set TP=C:\WINDOWS
 Copy nul new_config.ini >nul
 for /f "delims=" %%a in (config.ini) do (
 set str=%%a
 echo !str!|findstr /i "Path=" >nul && set str=!str:E:=%TP%!&echo !str! >>new_config.ini||echo !str!>>new_config.ini
 )
 notepad new_config.ini
 
 
 
 
 
 
 |  | 
|  2007-4-4 01:15 |  | 
|  | 
 
| wudixin96 银牌会员
 
      
 
 
 
 积分 1928
 发帖 931
 注册 2007-1-6
 状态 离线
 |  | 
|  2007-4-4 01:30 |  | 
|  | 
 
| a201341717 贫困用户
 
 
 
 
 
 积分 -2
 发帖 20
 注册 2007-1-30
 状态 离线
 |  | 
|  2007-4-4 02:39 |  | 
|  | 
 
| cracky 初级用户
 
   
 
 
 
 积分 28
 发帖 10
 注册 2007-10-18
 状态 离线
 | 
|   『第 5 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
我有疑问,如果在echo !str!|findstr /i "Path=" >nul && set str=!str:E:=%TP%!&echo !str! >>new_config.ini||echo !str!>>new_config.ini中的%TP%需要用!TP!来表示时,是写成set str=!str:E:=!TP!!吗 
 
 
 
 
 
 |  | 
|  2007-12-12 15:23 |  | 
|  | 
 
| huahua0919 银牌会员
 
      
 
 
 积分 1608
 发帖 780
 注册 2007-10-7
 状态 离线
 |  | 
|  2007-12-12 15:38 |  | 
|  | 
 
| cracky 初级用户
 
   
 
 
 
 积分 28
 发帖 10
 注册 2007-10-18
 状态 离线
 | 
| 『第 7 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
不对,我试过,这样是不行的,假设我的被替换文本是a.txt其中格式是a=1kk
 b=2kk
 c=3kk
 如果我前面设置变量TP是4我用set str=!str:3=!TP!!的方法去改变c的值结果是生成的结果是
 a=1kk
 b=2kk
 c=kkTP
 
 
 
 
 |  | 
|  2007-12-12 15:51 |  | 
|  | 
 
| huahua0919 银牌会员
 
      
 
 
 积分 1608
 发帖 780
 注册 2007-10-7
 状态 离线
 | 
| 『第 8 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
%PATH:str1=str2%只能是字符替换!
 你的和斑竹的有差别,你好好看上面他的帖子@!
 
 
 
 
 |  | 
|  2007-12-12 16:01 |  | 
|  | 
 
| cracky 初级用户
 
   
 
 
 
 积分 28
 发帖 10
 注册 2007-10-18
 状态 离线
 | 
| 『第 9 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
不明白我的和斑竹的有什么差别,仅仅是斑竹用的是%TP%,而我想使用!TP!而已.而且我又发现了一个问题,如果查找到的内容是一个带&的字串,比如说是a=jdbc\:mysql\://localhost\:3306/digdb?useUnicode\=true&characterEncoding\=GBK那么,当我意图更换3306的时候就会告诉我:'characterEncoding\' 不是内部或外部命令,也不是可运行的程序,难道说符号&有特殊的意义?请前辈明示
 
 
 
 
 |  | 
|  2007-12-13 08:48 |  | 
|  | 
 
| huahua0919 银牌会员
 
      
 
 
 积分 1608
 发帖 780
 注册 2007-10-7
 状态 离线
 | 
| 『第 10 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
set str=!str:3=!TP!!问题很简单,因为变量延迟开启以后,解析器每次对一行进行解析的时候,会查找其中是否有!,而上面这个简单的式子中存在两对!!,但解析器根本不知道那对对那对(其实是从左到右进行匹配的)所以,解析器会先分析!str:3=!这个变量, 而在这之前这个变量没有定义,所以就被定义成空了,后面的也是这样!
 
 
 
 
 |  | 
|  2007-12-18 09:37 |  | 
|  | 
 
| huahua0919 银牌会员
 
      
 
 
 积分 1608
 发帖 780
 注册 2007-10-7
 状态 离线
 |  | 
|  2007-12-18 09:38 |  | 
|  | 
 
| everest79 金牌会员
 
       一叶枝头,万树皆春
 
 
 
 积分 2564
 发帖 1127
 注册 2006-12-25
 状态 离线
 | 
| 『第 12 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
同一句中不充许出现两个相同级别,相同类型的转义有过这样的例子
 
 set/aa=123,b=9
 call echo %^a:1=%b%%
 命令行下
 
 
 
 
 |  | 
|  2007-12-18 11:44 |  | 
|  | 
 
| huahua0919 银牌会员
 
      
 
 
 积分 1608
 发帖 780
 注册 2007-10-7
 状态 离线
 | 
| 『第 13 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by everest79 at 2007-12-18 11:44 AM:同一句中不充许出现两个相同级别,相同类型的转义
 有过这样的例子
 
 set/aa=123,b=9
 call echo %^a:1=%b%%
 命令行下
 
以下也是两个相同级别,相同类型的,不需要转义后同样能运行! 
按照匹配原则,会将替换所有%x%,可结果却不是那样! 
@echo off 
set x=hehe 
echo %date:~-3%x%date:~2% 
pause 
 
 
 
 |  | 
|  2007-12-18 21:19 |  | 
|  | 
 
| everest79 金牌会员
 
       一叶枝头,万树皆春
 
 
 
 积分 2564
 发帖 1127
 注册 2006-12-25
 状态 离线
 |  | 
|  2007-12-18 22:10 |  | 
|  | 
 
| huahua0919 银牌会员
 
      
 
 
 积分 1608
 发帖 780
 注册 2007-10-7
 状态 离线
 |  | 
|  2007-12-18 22:16 |  |