标题: [文本处理] 将文本内容符合条件的某一行修改值的批处理 [打印本页]
作者: wmysbbs 时间: 2009-7-27 07:58 标题: 将文本内容符合条件的某一行修改值的批处理
有文本aaa.ini,内容如下
==============================================aaa.ini
[Log]
# 想要哪些日志,就在后面填写 True.
#
FileSystem=False
Account=False
UserID=False
[steamclient]
# 设置名字.
#
PlayerName="旧游戏名"
# 启用/禁用 steamclient.dll 生成记录文件.
#
# Default = False
#
Logging=False
# 更改以下设置,为服务器浏览器使用不同的主服务器!
#
#MasterServer=213.239.209.221
==============================================aaa.ini
现在想修改PlayerName里面的值 旧游戏名 改为 新游戏名,双引号为ini文件自带
我已经写到了显示那一步,但怎么修改就写不下去了,在此请教:
我写的bat文件如下:
-
- @echo off
- set "push=aaa.ini"
- set/p NewName= 请输入游戏名:
- for /f "eol=[ delims== tokens=1,*" %%a in (%push%) do (
- if "%%a"=="PlayerName" (
- set GN=%%a
- set Name=%%b
- )
- )
- echo %GN%=%Name%
- echo %GN%="%NewName%"
- pause
复制代码
作者: Lumiere 时间: 2009-7-27 09:57
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in (aaa.ini) do set str=%%a&echo !str:旧=新!>>aaaa.ini
- del aaa.ini&ren aaaa.ini aaa.ini
- pause>nul
复制代码
作者: tireless 时间: 2009-7-27 15:43
- @echo off
- set push="aaa.ini"
- set /p NewName= 请输入游戏名:
- set clear=.
- for /f "usebackq delims== tokens=1,*" %%a in (%push%) do (
- if defined clear set clear=>%push%
- (
- if "%%a"=="PlayerName" (
- echo %%a="%NewName%"
- ) else (
- if "%%b"=="" (echo;%%a) else echo %%a=%%b
- )
- ) >> %push%
- )
复制代码
作者: wmysbbs 时间: 2009-7-27 18:44
三楼的代码可以用,但是遇到中文名就不行了,怎么决解呢
顺便说一句,PlayerName="旧游戏名" 这里的双引号可要可不要
[ 本帖最后由 wmysbbs 于 2009-7-27 18:52 编辑 ]
作者: tireless 时间: 2009-7-27 18:54 标题: 回复 4楼 的帖子
说详细一点。另,你是否对3楼代码进行了修改?
[ 本帖最后由 tireless 于 2009-7-27 18:57 编辑 ]
作者: wmysbbs 时间: 2009-7-28 14:39
原帖由 tireless 于 2009-7-27 18:54 发表
说详细一点。另,你是否对3楼代码进行了修改?
就在是输入新游戏名后,aaa.ini文件里面的游戏名显示是乱码
并非全部是乱码
三楼的代码我只修改了aaa.ini文件名,别的都没更改
作者: wmysbbs 时间: 2009-7-28 14:45
汗,刚刚又测试了下,应该是我系统的问题,在XPsp3下没事,sp2下乱码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |