![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-30 21:27 |
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,279 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 合并多张表, 添加数据项。 |
| 可打印版本 2,054 / 15 |
| 第1楼 uiopuiop | 发表于 2009-04-25 06:34 |
| 中级用户 发帖 211 积分 400 | |
|
合并多张表, 添加数据项。 如何把附件中的三张表合并起来,要求是这样的:
如果在MAIN.TXT 中的第一列发现包含字符串“DEN” ,然后按照第二列的信息(ERP / SOL),则从 ERP.TXT 或 SOL.TXT中的内容调出一个记录,并加在MAIN.TXT 的第三列上。如果不符合条件,就不加任何数据项在第三列上。 结果大致是这样的: MAIN.TXT ADMIN , SOL , DDIC , SOL , DDIC , ERP , DDIC , ERP , DDIC , ERP , FIDEMO , ERP , J2EE_ADMIN , ERP , SAP* , ERP , SAP* , ERP , SAPUSER , ERP , SOLMAN , ERP , SPDEMO , ERP , SPDEMO , ERP , WDDEMO , ERP , WDDEMO , SOL , STUDENT01 , ERP , rqrew STUDENT01 , ERP , ewe STUDENT02 , SOL , 4312 STUDENT02 , SOL , 4431 STUDENT03 , ERP , fdfdd STUDENT03 , ERP , kjlkj STUDENT04 , SOL , 4554 STUDENT04 , SOL , 443 STUDENT05 , SOL , 78687 STUDENT05 , ERP , oioi ........ 我想了好久,但是脚本老是不能正常运行。 参见帖子,http://www.cn-dos.net/forum/viewthread.php?tid=47136&pid=330725&page=1&sid=pyhnrc#pid330725 不过现在是3张表了,情况复杂了。 set ListName=ERP SOL for %%i in (%ListName%) do (call :Add_record %%i) GOTO :EOF :: ++++++++++++++++++++++++++++++++++++++++++++++ :Add_record setlocal enabledelayedexpansion set n= for /f "eol=# tokens=1" %%i in (%1.txt) do ( set /a n+=1 set NUM_!n!=%%i ) set n= for /F "eol=# tokens=1-3 delims=," %%A in (main.txt) do ( if "%%C"=="" (echo %%A|find /i "ENT") if NOT ERRORLEVEL 1 if "%%B"=="%1" ( set /a n+=1 for %%G in (NUM_!n!) do (echo.%%A ,%%B , !%%C!<nul>>main.txt.tmp ) ) else ( echo.%%A , %%B<nul>>main.txt.tmp) ) copy /y Instance.cfg.tmp main.txt & del /f /q main.txt.tmp endlocal goto :eof :: ++++++++++++++++++++++++++++++++++++++++++++++ [ Last edited by uiopuiop on 2009-4-25 at 07:25 ] 附件 test table.zip (534 bytes) |
|
| 第2楼 freeants001 | 发表于 2009-04-25 06:53 |
| 中级用户 发帖 244 积分 330 来自 湖北 | |
|
如果在MAIN.TXT 中的第一列发现字符串为“DEN”,是子串吧,下载的符件没有发现字符串"DEN",只有子串"DEN"
|
|
| 第3楼 uiopuiop | 发表于 2009-04-25 07:03 |
| 中级用户 发帖 211 积分 400 | |
Originally posted by freeants001 at 2009-4-25 06:53 AM: 对的是包含字符串 "DEN", 没说清楚,更正了。 |
|
| 第4楼 netbenton | 发表于 2009-04-25 07:12 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
偶想到了一个纯批的方法,暂不公布,看看有没有更好的。^_^
|
|
| 第5楼 uiopuiop | 发表于 2009-04-25 07:21 |
| 中级用户 发帖 211 积分 400 | |
Originally posted by netbenton at 2009-4-25 07:12 AM: 纯批好,有好主意就拿出来看看吧,说不定别人也会有什么启发,谢谢啦!昨天晚上我想到两点半都没想出来,我的脚本嵌套太多了,自己都搞不清楚。 [ Last edited by uiopuiop on 2009-4-25 at 07:38 ] |
|
| 第6楼 freeants001 | 发表于 2009-04-25 07:59 |
| 中级用户 发帖 244 积分 330 来自 湖北 | |
|
终于排除错误了,很苯的方法~~
[ Last edited by freeants001 on 2009-4-26 at 04:01 ] |
|
| 第7楼 netbenton | 发表于 2009-04-25 08:07 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
多出了一点,删掉了。 [ Last edited by netbenton on 2009-4-25 at 06:11 ] |
|
| 第8楼 tireless | 发表于 2009-04-25 08:10 |
| 银牌会员 发帖 1,122 积分 2,025 | |
| 第9楼 netbenton | 发表于 2009-04-25 08:16 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
8楼的:
for %%i in (%%b!%%b!) do echo %%a , %%b , !%%i! 用得好,加分 |
|
| 第10楼 uiopuiop | 发表于 2009-04-25 08:49 |
| 中级用户 发帖 211 积分 400 | |
|
to: tireless 老是麻烦tireless兄,正是太感激了 ~~~~
尽我力量给你加了4分,别嫌少啊。 if "!var:DEN=!" neq "%%a" 用的也很巧妙 :) |
|
| 第11楼 netbenton | 发表于 2009-04-25 08:53 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
来个另类的,不用 if 也可以做到
|
|
| 第12楼 uiopuiop | 发表于 2009-04-25 09:11 |
| 中级用户 发帖 211 积分 400 | |
Originally posted by tireless at 2009-4-25 08:10 AM: |
|
| 第13楼 tireless | 发表于 2009-04-25 10:01 |
| 银牌会员 发帖 1,122 积分 2,025 | |
|
Re 12 楼 |
|
| 第14楼 uiopuiop | 发表于 2009-04-25 10:18 |
| 中级用户 发帖 211 积分 400 | |
|
RE: 第 13 楼 多谢了,牛人啊~~~ 救我于苦难之中。。。。
怪我没很好的理解下面语句的意思: set /a %%b+=1 for %%i in (%%b_!%%b!) do echo %%a , %%b , !%%i! [ Last edited by uiopuiop on 2009-4-25 at 10:19 ] |
|
| 第15楼 tireless | 发表于 2009-04-25 11:09 |
| 银牌会员 发帖 1,122 积分 2,025 | |
|
Re 14 楼 先设置了这些变量:
ERP_1 ERP_2 ERP_3 ... SOL_1 SOL_2 SOL_3 ... set /a %%b+=1 假如 %%b 为 ERP,则变量 ERP 的数值每次加 1,然后 !ERP_1! , !ERP_2! ... 就引用了之前设置好的变量 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |