![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 04:33 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 根据文本内容,逐行修改同一个INI |
| 可打印版本 1,961 / 18 |
| 第1楼 wmysbbs | 发表于 2009-06-27 04:13 |
| 初级用户 发帖 52 积分 172 | |
|
根据文本内容,逐行修改同一个INI 文本A.txt内容:
1111 2222 3333 4444 5555 ................... 行数不定 然后根据里面的内容,再判断C:\已更新.txt是否已经有相同的内容,如果没有,就修改C:\B.ini文件,如果有,接着读取第二行 C:\B.ini文件的内容 [更新] 源目录=D:\1111 目标目录=E:\1111 每读取A.txt一行,就修改C:\B.ini的内容一次(生成C:\B.ini也行) 然后执行C:\程序.exe 接着写入日志 1111>>C:\已更新.txt 然后接着读取第二行,执行以上相同操作,直到读取完所有的行才退行 |
|
| 第2楼 Hanyeguxing | 发表于 2009-06-27 06:15 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
[ Last edited by Hanyeguxing on 2009-6-27 at 06:53 ] |
|
| 第3楼 wmysbbs | 发表于 2009-06-27 06:25 |
| 初级用户 发帖 52 积分 172 | |
|
呵呵,又是Hanyeguxing兄啊,多谢~~~
一会去测试一下效果 [ Last edited by wmysbbs on 2009-6-27 at 06:27 ] |
|
| 第4楼 Hanyeguxing | 发表于 2009-06-27 06:34 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
需要说明的是,批处理中:
for /f "delims=" %%i in (c:\已更新.txt) do echo %%i>>han.txt 1,作用是删除源文件中的空行 2,生成新文件 3,确保下一命令 echo %xing%>>han.txt 输出到新的一行中 for /f "delims=" %%i in (A.txt) do echo %%i>>han.txt 也有类似的作用 [ Last edited by Hanyeguxing on 2009-6-27 at 06:57 ] |
|
| 第5楼 wmysbbs | 发表于 2009-06-27 06:54 |
| 初级用户 发帖 52 积分 172 | |
|
我得把之前的代码和这段代码结合起来,因为之前发现xcopy更新的时候不太好用!!
|
|
| 第6楼 tireless | 发表于 2009-06-27 07:22 |
| 银牌会员 发帖 1,122 积分 2,025 | |
|
是不是 A.txt 的内容存在于 C:\已更新.txt 就直接下一行,而不存在于 C:\已更新.txt,就 (
修改 C:\B.ini 执行 C:\程序.exe 写入该行>>C:\已更新.txt ) |
|
| 第7楼 wmysbbs | 发表于 2009-06-27 07:25 |
| 初级用户 发帖 52 积分 172 | |
Originally posted by tireless at 2009-6-27 07:22 AM: 嗯,就是这样 |
|
| 第8楼 wmysbbs | 发表于 2009-06-27 07:26 |
| 初级用户 发帖 52 积分 172 | |
|
我稍微修改了一下代码
@echo off set xing=寒夜孤星 for /f "delims=" %%i in (已更新.txt) do echo %%i>>han.txt echo %xing%>>han.txt for /f "delims=" %%i in (A.txt) do echo %%i>>han.txt for /f "delims=" %%i in (han.txt) do ( if not defined %%i set %%i=A & echo %%i>>ye.txt ) del han.txt /q /f for /f "delims=:" %%i in ('findstr /n .* ye.txt ^|findstr /r /c:"%xing%"') do set gu=%%i for /f "skip=%gu% delims=" %%i in (ye.txt) do ( del C:\cfg.ini /q echo [更新]>C:\cfg.ini echo 远程目录=D:\%%i>>C:\cfg.ini echo 本地目录=E:\%%i>>C:\cfg.ini "C:\原调用.exe" echo %%i>>已更新.txt ) del ye.txt /q /f |
|
| 第9楼 wmysbbs | 发表于 2009-06-27 07:28 |
| 初级用户 发帖 52 积分 172 | |
|
基本上就是这样,set xing=寒夜孤星 好象可以不要这一段的吧?
|
|
| 第10楼 tireless | 发表于 2009-06-27 07:31 |
| 银牌会员 发帖 1,122 积分 2,025 | |
|
[ Last edited by tireless on 2009-6-27 at 09:48 ] |
|
| 第11楼 wmysbbs | 发表于 2009-06-27 07:31 |
| 初级用户 发帖 52 积分 172 | |
|
@echo off&&setlocal enabledelayedexpansion
set datais=E:\Progra~1\HintSoft\XsServer\DownLoad\Logs\ del !datais!更新对比.bat /f /q>nul 2>nul set ha=%date:~0,4%%date:~5,2%%date:~8,2% set hb=%date:~0,4% set hc=%date:~5,2% For /f "skip=1 tokens=1-3 delims=," %%a in (!datais!DLog_%hb%_%hc%.log) do ( set gu=%%a set ye=%%b For /f "tokens=1-3 delims=- " %%i in ("%%c") do ( set str1=0%%j set str2=0%%k set xing=%%i!str1:~-2!!str2:~-2! ) if "!gu!" == "成功" if "!xing!" == "!ha!" ( Echo xcopy F:\更多网游\!ye!\*.* H:\更多网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat Echo xcopy F:\更多网游\!ye!\*.* K:\更多网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat Echo xcopy F:\更多网游\!ye!\*.* N:\更多网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat Echo xcopy F:\更多网游\!ye!\*.* Q:\更多网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat Echo xcopy F:\热门网游\!ye!\*.* H:\热门网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat Echo xcopy F:\热门网游\!ye!\*.* K:\热门网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat Echo xcopy F:\热门网游\!ye!\*.* N:\热门网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat Echo xcopy F:\热门网游\!ye!\*.* Q:\热门网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat ) ) @Echo exit >>!datais!更新对比.bat start !datais!更新对比.bat exit 因为之前的代码是XCOPY,但XCOPY有时候不一定能完全对比,改用软件来对比更新 |
|
| 第12楼 wmysbbs | 发表于 2009-06-27 08:15 |
| 初级用户 发帖 52 积分 172 | |
Originally posted by tireless at 2009-6-27 07:31 AM: |
|
| 第13楼 wmysbbs | 发表于 2009-06-27 11:40 |
| 初级用户 发帖 52 积分 172 | |
|
现在问题又来了!!!!
@echo off&&setlocal enabledelayedexpansion set XSLog=D:\Docume~1\Admini~1\桌面\同步游戏\ set TBLog=D:\Docume~1\Admini~1\桌面\同步游戏\Log\ set ha=%date:~0,4%%date:~5,2%%date:~8,2% set hb=%date:~0,4% set hc=%date:~5,2% del !TBLog!!ha!需要更新.txt /f /q>nul 2>nul For /f "skip=1 tokens=1-3 delims=," %%a in (!XSLog!DLog_%hb%_%hc%.log) do ( set gu=%%a set ye=%%b For /f "tokens=1-3 delims=- " %%i in ("%%c") do ( set str1=0%%j set str2=0%%k set xing=%%i!str1:~-2!!str2:~-2! ) if "!gu!" == "成功" if "!xing!" == "!ha!" echo !ye!>>!TBLog!!ha!需要更新.txt ) For /f "usebackq eol= delims=" %%a in (!TBLog!!ha!已更新.txt) do set %%a=. For /f "usebackq eol= delims=" %%a in (!TBLog!!ha!需要更新.txt) do ( if not defined %%a ( echo echo 远程目录=D:\网络游戏\%%a echo 本地目录=E:\网络游戏\%%a 原调用.exe echo;%%a>>!TBLog!!ha!已更新.txt ) > cfg.ini ) pause 以上代码只能从D:\网络游戏\更新到E:\网络游戏\ 要是想D:\网络游戏\再更新到F:\网络游戏\ G:\网络游戏\ ........ 那要怎么改啊 D:\ E:\ F:\ G:\ 这个不是按顺序的,是盘符自已定的 [ Last edited by wmysbbs on 2009-6-27 at 11:41 ] |
|
| 第14楼 Hanyeguxing | 发表于 2009-06-27 12:42 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
怎么得到这些盘符的?
想要除了C盘以外所有的硬盘盘符? 把具体的想法说清楚些,修改原贴就可以,不用总发新贴 [ Last edited by Hanyeguxing on 2009-6-27 at 13:08 ] |
|
| 第15楼 wmysbbs | 发表于 2009-06-27 13:07 |
| 初级用户 发帖 52 积分 172 | |
|
不是,这些盘符最好是自己设定好的,不要自动获取
Echo xcopy F:\更多网游\!ye!\*.* H:\更多网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat Echo xcopy F:\更多网游\!ye!\*.* K:\更多网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat Echo xcopy F:\更多网游\!ye!\*.* N:\更多网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat Echo xcopy F:\更多网游\!ye!\*.* Q:\更多网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat 就像XCOPY,自动分发更新到其他指定好的盘 [ Last edited by wmysbbs on 2009-6-27 at 13:16 ] |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |