中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-11 20:47
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 合并多张表, 添加数据项 (2)- 已结 查看 891 回复 6
楼 主 合并多张表, 添加数据项 (2)- 已结 发表于 2009-05-17 11:07 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 400
发帖 211
注册 2007-09-30 18:02
18年会员
UID 98650
性别 男
状态 离线
如何把附件中的XXX.txt 合并到 原表.txt 中,输出另外一张表,要求是这样的:
XXX 为 ERP.txt SOL.txt WWM.txt (数量不定,并且内容为不规则的字符串)

如果在 原表.txt 中的第一列发现包含字符串“STUDY” ,并且第一列字符串开头是(ERP / SOL/WWM),则从 ERP.TXT 或 SOL.TXT或 WWM.TXT 中的内容调出一个记录,并加在 原表.txt 的第三列上。如果不符合条件,就不加任何数据项在第三列上。 另外,如果第一列字符串有重复,则分配相同的字符串在第三列。

输出结果为:
ADMIN , fda
DDIC , adfd
SOLMAN , ds
SPDEMO , da
SPDEMO , fda
WDDEMO , fda
WDDEMO , Sfds
WWMstudy01 , adfe ,wwm_WWM
WWMstudy01 , fds , wwm_WWM
SOLstudy01 , sa, SOL_rqrew
SOLstudy02 , adsf, SOL_ewe
WWMstudy03 , WfWM, wwm_W3
ERPstudy03 , dsERP, ERP_312
SOLstudy03 , SOaL ,SOL_fdfdd
SOLstudy04 , SaOL, SOL_kjlkj
WWMstudy04 , WWM , wwm_WW3
ERPstudy05 , EadRP,ERP_ERP31
WWMstudy05 , WaWM, wwm_WJKJ
ERPstudy06 , ER2P, ERP_55ERP
ERPstudy07 , ERaP, ERP_ERP3
ERPstudy88 , E2RP, ERP_8687
SOLstudy08 , SsOL, SOL_oioi
WWMstudy06 , WWM, wwm_WJII
ERPstudy09 , ERdP, ERP_3
SOLstudy99 , SfOL, SOL_vczxcv

~~~~~~~~~~~~~~~~~~~~
下面的代码有问题:
@echo off
setlocal enabledelayedexpansion
set List=ERP SOL WWM
set Filter=ERPstudy SOLstudy WWMstudy

for %%a in (%List%) do (
set n=
for /f "delims=" %%i in (%%a.txt) do (
set /a n+=1
set %%a_!n!=%%i
)
)


(for /f "tokens=1,2 delims=, " %%a in (原表.txt) do (
set var=%%a

if /i "!var:stud=!" neq "%%a" (
set /a %%a+=1
set var2=%var:~,3%_!%%a!
echo *!var2!*
for %%i in (!var2!) do echo %%a ,!%%i!
) else echo %%a

)) >main_new.txt
pause



参见帖子:
http://www.cn-dos.net/forum/viewthread.php?tid=47165&fpage=1&highlight=%2Buiopuiop&page=1

[ Last edited by uiopuiop on 2009-5-25 at 09:31 ]
附件
test table2.zip (1.05 KiB, 下载次数: 7)
2 发表于 2009-05-18 02:25 ·  美国 惠普HP
中级用户
★★
积分 400
发帖 211
注册 2007-09-30 18:02
18年会员
UID 98650
性别 男
状态 离线
哪位大哥行行好,帮个忙,谢谢了! 不是我懒,我想了一整天都没搞定。
3 发表于 2009-05-18 06:28 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线

@echo off
setlocal enabledelayedexpansion
set List=ERP SOL WWM

for %%a in (%List%) do (
set n=
for /f "delims=" %%i in (%%a.txt) do (
set %%a_!n!=%%i
set /a n+=1
)
)

(for /f "tokens=1,2 delims=, " %%a in (原表.txt) do (
set var=%%a
if "!var:STUDY=!" neq "!var!" (
if not defined %%a (
for %%i in (!var:~^,3!) do (
for %%j in (!var:~^,3!_!%%i!) do echo %%a , %%b , !%%j!&set %%a=!%%j!
set /a %%i+=1
)
) else echo %%a , %%b , !%%a!
) else echo %%a , %%b
))>原表_new.txt


@echo off
setlocal enabledelayedexpansion
set List=ERP SOL WWM

for %%a in (%List%) do (
for /f "delims=" %%i in (%%a.txt) do set %%a=!%%a! %%i
)

(for /f "tokens=1,2 delims=, " %%a in (原表.txt) do (
set var=%%a
if "!var:STUDY=!"=="!var!" (echo %%a , %%b) else (
if defined %%a (echo %%a , %%b , !%%a!) else (
for %%i in (!var:~^,3!) do (
for /f "tokens=1,*" %%1 in ("!%%i!") do (
echo %%a , %%b , %%1
set "%%a=%%1" & set "!var:~,3!=%%2"
))))))>__new.txt


[ Last edited by tireless on 2009-5-19 at 08:24 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
uiopuiop +4 2009-05-18 11:59
4 发表于 2009-05-18 12:01 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 400
发帖 211
注册 2007-09-30 18:02
18年会员
UID 98650
性别 男
状态 离线
感激不尽!!!
我现在正在将代码试着应用到实际环境中。
5 发表于 2009-05-18 14:01 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
for %%i ....
for %%j ...
这里面 直接CALL 怎么样
简单!简单!再简单!
6 Re 5 楼 发表于 2009-05-18 14:43 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
CALL 很慢。宁愿用几个 for 代替一个 call

命令耗时清单

[ Last edited by tireless on 2009-5-18 at 14:49 ]
7 发表于 2009-05-20 11:59 ·  中国 上海 黄浦区 电信
中级用户
★★
积分 400
发帖 211
注册 2007-09-30 18:02
18年会员
UID 98650
性别 男
状态 离线
没有理解第二种方法是怎么把其他3个表里的内容进行赋值的. 变量名是什么? (例如第一种方法里的变量名是SOL_1, SOL_2, .....)

ECHO 出来也没看懂:
@echo off
echo %time%

setlocal enabledelayedexpansion
set List=ERP SOL WWM MMM

for %%a in (%List%) do (
for /f "delims=" %%i in (%%a.txt) do (set %%a=!%%a! %%i
echo !%%a!
echo ~~~~~~~~~~~~~~~)
)

###############################
ERP_312
~~~~~~~~~~~~~~~
ERP_312 ERP_ERP31
~~~~~~~~~~~~~~~
ERP_312 ERP_ERP31 ERP_55ERP
~~~~~~~~~~~~~~~
ERP_312 ERP_ERP31 ERP_55ERP ERP_ERP3
~~~~~~~~~~~~~~~
ERP_312 ERP_ERP31 ERP_55ERP ERP_ERP3 ERP_8687
~~~~~~~~~~~~~~~
ERP_312 ERP_ERP31 ERP_55ERP ERP_ERP3 ERP_8687 ERP_3
~~~~~~~~~~~~~~~
ERP_312 ERP_ERP31 ERP_55ERP ERP_ERP3 ERP_8687 ERP_3 ERP_32
~~~~~~~~~~~~~~~
SOL_rqrew
~~~~~~~~~~~~~~~
SOL_rqrew SOL_ewe
~~~~~~~~~~~~~~~
SOL_rqrew SOL_ewe SOL_fdfdd
~~~~~~~~~~~~~~~
SOL_rqrew SOL_ewe SOL_fdfdd SOL_kjlkj
~~~~~~~~~~~~~~~
SOL_rqrew SOL_ewe SOL_fdfdd SOL_kjlkj SOL_oioi
.......

[ Last edited by uiopuiop on 2009-5-20 at 12:00 ]
论坛跳转: