[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

  1、新增加的那一列数据和考勤机的号码有什么关系?
  2、在“120110311.txt”这样的文件名中,考勤机号码和哪个位置上的数字对应?总共有多少台?
  3、你是希望对单独的一个文件进行处理,还是一次要处理多个这样的文件?
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

总算有人回应了,首先感谢关注

1、新增那一列和考勤机号只能是自己写死了,例如考勤机1 就是 001 考勤机2 是 002

2、考勤机120110311应该是,考勤机1是和号码对应,实际有20台

3、希望一次处理多个文件,然后做成定时任务,每天机器自己读,自己批处理,最后系统自己完成

要求是不是太过分了,没办法,这就是实际工作

TOP

17点了,先下个班,回头再上来查看一下;

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

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

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

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

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

现实真是骨感啊

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

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

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

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

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

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

我测试了一下

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

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

TOP

回复 10楼 的帖子

很简单。
这取决于你想弄成什么样的序号。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或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

回复 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

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

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

我修改的代码如下:

[attach]3576[/attach]

TOP

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

TOP

返回列表