[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理怎样根据文件名新增一列并移动到其它文件夹?

大家好:
我在工作中遇到这样的业务场景:

考勤机导出数据格式为文本文件,不同的考勤机导出的文件名不一样,例如考勤机一导出为,考勤机120110311.txt,考勤机二导出为考勤机220110311.txt

文本文件的内容为

1001 2011-03-11 15:42:00
1001 2011-03-11 17:00:00

现在希望根据考勤机导出的文件名新增加一列如下:

1001 2011-03-11 15:42:00 001
1001 2011-03-11 17:00:00 001

并且将新生成的文件复制到另外的文件夹,供人事系统读取;

不知道问题描述清楚没有,17点之前在线等

[ 本帖最后由 kakushang 于 2011-3-13 10:06 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

居然问题全部解决了;

一拜

二拜

三拜

五体投地退出

TOP

回复 14楼 的帖子

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set KQ_001=上海店99999
  4. set KQ_002=北京店888
  5. for %%a in (*.txt) do (
  6.     set KQ=%%a
  7.     set KQ=!KQ:~0,-16!
  8.     for /f "tokens=1 delims==" %%b in ('set KQ_ ^| findstr "!KQ!"') do (
  9.         set num=%%b
  10.         set num=!num:~3!
  11.     )
  12.     sed -i "s/$/ !num!/" "%%a"
  13.     move "%%a" "C:\test\"
  14. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

其实这是考勤机导出的文本文件;

每个考勤机导出的文件名为:上海店99999,即店名+一串无意义数字

文本内容就简单了,

考勤卡号 日期 时间

我上传的文件是我自己做的文件的,模拟两天导出的数据;

TOP

依然不懂,14楼样例文件前后都是54b,哪有改过哦

TOP

难道是我愚钝,那个地方没有写对,没起作用,还是请斑竹大大多多照看一下

样例文件如下:
[attach]3572[/attach]
[attach]3573[/attach]
[attach]3574[/attach]
[attach]3575[/attach]

我修改的代码如下:

[attach]3576[/attach]

TOP

回复 12楼 的帖子

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set KQ_001=上海店999999
  4. set KQ_002=北京店888888
  5. for %%a in (*.txt) do (
  6.     set KQ=%%a
  7.     set KQ=!KQ:~0,-12!
  8.     for /f "tokens=1 delims==" %%b in ('set KQ_ ^| findstr "!KQ!"') do (
  9.         set num=%%b
  10.         set num=!num:~3!
  11.     )
  12.     sed -i "s/$/ !num!/" "%%a"
  13.     move "%%a" "C:\test\"
  14. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我彻底服了斑竹了,1点还在线

1、序号最好能人为的定,例如开头为上海店999999的文件,序号为001,开头为北京店888888的文件,序号为002什么的,总共大约19个考勤机

[ 本帖最后由 kakushang 于 2011-3-12 07:44 编辑 ]

TOP

回复 10楼 的帖子

很简单。
这取决于你想弄成什么样的序号。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我测试了一下

生成的文件最后一列是00上、00北之类的,不能弄成序号吗;

这确实是我的非分要求,做IT总是有一样追求极致的偏执,就是不能这样,我也无话可说了,非常感谢斑竹

TOP

回复 8楼 的帖子

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (*.txt) do (
  4.     set KQ=%%a
  5.     set KQ=!KQ:~0,-12!
  6.     sed -i "s/$/ !KQ!/" "%%a"
  7.     move "%%a" "C:\test\"
  8. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

好吧,我承认搞IT的是个变态,我现在全部交待了

1、生成的考勤文件实际是这样的,上海店999920110311,北京店88888820110311,

就算斑竹叫我去die我也没话好说了

TOP

回复 6楼 的帖子

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (*.txt) do (
  4.     set KQ=%%a
  5.     set KQ=!KQ:~0,1!
  6.     sed -i "s/$/ 00!KQ!/" "%%a"
  7.     move "%%a" "C:\test\"
  8. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

真厉害啊,真的可以实现;

现实的业务就是麻烦,还有两个问题:

1、文件名是前面是考勤机号:120110311,1代表1号机,后面是时间,每天,甚至不定时导出数据来,所以可能有120110312、120110313等等文件,后面都增加同样的标志位;

2、处理完的文件移动到固定的文件夹中方便系统读取;

现实真是骨感啊

[ 本帖最后由 kakushang 于 2011-3-11 23:12 编辑 ]

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set KQ_1=120110311.txt
  4. set KQ_2=220110311.txt
  5. for /l %%a in (1,1,2) do (
  6.     sed -i "s/$/ 00%%a/" !KQ_%%a!
  7. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表