| 
 
uiopuiop 
中级用户
 
   
 
  
  
积分 400 
发帖 211 
注册 2007-9-30 
状态 离线
 | 
『楼 主』:
 如何给新员工分配工号?合并两张表
 
使用 LLM 解释/回答一下
  
有两张表,如何自动给新员工分配员工号?合并两张表,得到NEW.txt 
 
 
Employee.txt 包含如下内容 
zhao,NEW 
qian, OLD 
sun, NEW 
li, OLD 
zhou, NEW 
wu,TEMP 
 
NEW.txt 包含如下内容 (新员工工号) 
100 
101 
102 
 
 
NEW2.txt 需要得到以下内容: 
zhao,NEW, 100 
qian, OLD 
sun, NEW, 101 
li, OLD 
zhou, NEW, 102 
wu,TEMP 
 
 Last edited by uiopuiop on 2009-4-23 at 03:23 ] 
 
    
 
  
 |   
 | 
  2009-4-23 01:56 | 
  
 | 
 | 
 
tireless 
银牌会员
 
     
 
  
  
积分 2025 
发帖 1122 
注册 2007-9-5 
状态 离线
 | 
『第 2 楼』:
 
 
使用 LLM 解释/回答一下
  
如果 NEW.txt 里面的数字后一位比前一位大1: 
@echo off&setlocal enabledelayedexpansion 
set /p n=<new.txt 
(for /f "tokens=1,2 delims=, " %%a in (Employee.txt) do ( 
  if /i "%%b"=="NEW" ( 
    echo.%%a, %%b, !n! 
    set /a n+=1 
  ) else echo.%%a, %%b 
))>NEW2.txt 
start NEW2.txt
  
 
    
 
  
 |   
 | 
  2009-4-23 03:25 | 
  
 | 
 | 
 
uiopuiop 
中级用户
 
   
 
  
  
积分 400 
发帖 211 
注册 2007-9-30 
状态 离线
 | 
『第 3 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by tireless at 2009-4-23 03:25 AM: 
如果 NEW.txt 里面的数字后一位比前一位大1: 
@echo off&setlocal enabledelayedexpansion 
set /p n=<new.txt 
(for /f "tokens=1,2 delims=, " %%a in (Employee.txt) ... 
  
不好意思,在实际情况下NEW.txt 里面的不一定是数字而且是没有规律字符串。 
想到要 用 set /a num+=1 给每个符合的记录编号,但想不出有什么简便的算法。
 
 Last edited by uiopuiop on 2009-4-23 at 04:16 ]  
 
    
 
  
 |   
 | 
  2009-4-23 04:09 | 
  
 | 
 | 
 
tireless 
银牌会员
 
     
 
  
  
积分 2025 
发帖 1122 
注册 2007-9-5 
状态 离线
 | 
  『第 4 楼』:
 
 
使用 LLM 解释/回答一下
  
@echo off&setlocal enabledelayedexpansion 
set n= 
for /f "tokens=*" %%a in (new.txt) do ( 
  set /a n+=1 
  set #!n!=%%a 
) 
 
set n= 
(for /f "tokens=1,2 delims=, " %%a in (Employee.txt) do ( 
  if /i "%%b"=="new" ( 
    set /a n+=1 
    for %%i in (#!n!) do echo.%%a, %%b, !%%i! 
  ) else echo.%%a, %%b 
))>NEW2.txt 
p.s. 员工号位数是否一致?
 
 Last edited by tireless on 2009-4-23 at 04:26 ]  
 
    
 
 
 
  
 |   
 | 
  2009-4-23 04:22 | 
  
 | 
 | 
 
uiopuiop 
中级用户
 
   
 
  
  
积分 400 
发帖 211 
注册 2007-9-30 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
re: 员工号位数是否一致? 不一致,我这里只是举个例子,实际情况可能是一个随机的EMAIL 地址。 
 
set #!n!=%%a 
 中#n表示什么? 
 
echo.ab 和 echo ab有什么区别? 
 
 Last edited by uiopuiop on 2009-4-23 at 04:38 ] 
 
    
 
  
 |   
 | 
  2009-4-23 04:30 | 
  
 | 
 | 
 
tireless 
银牌会员
 
     
 
  
  
积分 2025 
发帖 1122 
注册 2007-9-5 
状态 离线
 | 
『第 6 楼』:
 Re 5楼
 
使用 LLM 解释/回答一下
  
# 是变量名的一部分。有点多余了,可以把代码中的 # 去掉。 
 
echo.ab 中的点也多余了。。。可以去掉。加一个点是为了防止后面的字符是 on 或 off,造成 echo on 或 echo off;要输出空行时也要加点。 
 
 Last edited by tireless on 2009-4-23 at 04:46 ] 
 
    
 
  
 |   
 | 
  2009-4-23 04:41 | 
  
 | 
 | 
 
uiopuiop 
中级用户
 
   
 
  
  
积分 400 
发帖 211 
注册 2007-9-30 
状态 离线
 | 
 | 
  2009-4-23 04:53 | 
  
 | 
 | 
 
mmh1 
初级用户
 
  
 
  
  
积分 20 
发帖 24 
注册 2009-3-18 
状态 离线
 | 
『第 8 楼』:
 
 
使用 LLM 解释/回答一下
  
3楼,4楼的我试了下,怎么不行啊???? 
结果: 
hao,NEW,  
qian, OLD 
sun, NEW, 100 
li, OLD 
zhou, NEW, 101 
wu, TEMP 
 
    
 
  
 |   
 | 
  2009-4-23 05:06 | 
  
 | 
 | 
 
freeants001 
中级用户
 
   
 
  
 
积分 330 
发帖 244 
注册 2006-4-14 来自 湖北 
状态 离线
 | 
『第 9 楼』:
 
 
使用 LLM 解释/回答一下
  
hao,NEW,  
qian, OLD 
sun, NEW, 100 
li, OLD 
zhou, NEW, 101 
wu, TEMP 
 
    
 
  
 |   
 | 
  2009-4-23 05:11 | 
  
 | 
 | 
 
freeants001 
中级用户
 
   
 
  
 
积分 330 
发帖 244 
注册 2006-4-14 来自 湖北 
状态 离线
 | 
『第 10 楼』:
 
 
使用 LLM 解释/回答一下
  
来个JS的 
fso=WScript.createobject("scripting.filesystemobject"); 
f1=fso.opentextfile("Employee.txt") 
f2=fso.opentextfile("NEW.txt"); 
f3=fso.createtextfile("$_dest.txt",1) 
re=/\bNEW*$/i; 
while(!f1.AtEndOfStream){ 
    sss=f1.readline(); 
    if(re.test(sss))sss=sss.replace(re,"NEW,"+f2.readline()); 
    f3.writeline(sss); 
}
  
 
    
 
  
 |   
 | 
  2009-4-23 05:13 | 
  
 | 
 | 
 
jmz573515 
银牌会员
 
     
 
  
 
积分 1212 
发帖 464 
注册 2006-12-13 
状态 离线
 | 
『第 11 楼』:
 
 
使用 LLM 解释/回答一下
  
 
on error resume next 
set fso=createobject("scripting.filesystemobject") 
set f1=fso.opentextfile("Employee.txt") 
set f2=fso.opentextfile("NEW.txt") 
set f3=fso.createtextfile("Employee_new.txt") 
do while f1.atendofstream<>true 
	n=f1.readline 
	if f1.line mod 2=0 then 
		sm=sm &n & "," & f2.readline & vbcrlf 
		if err then err.caler 
	else 
		sm=sm & n & vbcrlf 
	end if 
loop 
f3.write sm 
f1.close 
f2.close 
f3.close 
set fso=nothing 
 
 Last edited by jmz573515 on 2009-4-23 at 21:58 ]  
 
    
 
  
 |   
 | 
  2009-4-23 21:53 | 
  
 |