Board logo

标题: 批处理体验:简单几句话,节省数小时! [打印本页]

作者: pumahxh    时间: 2010-3-24 23:50     标题: 批处理体验:简单几句话,节省数小时!

为什么来这里学习P,对我来说,不是P好玩(我非计算机专业,没那么大兴趣),也不是P有多强大,而是正如本站所言:“批处理-化繁为简,提高工作效率”。这几天不停地加班,输入、整理一大堆个人信息,虽然累,但想来为世博做贡献,也就值了。呵呵~(自我安慰)
案例如下:数百份个人信息存在EXCL表格内(花我好长时间,一个字一个字敲进电脑的),假设300个人,还要依照这些信息,给每个人做一份WORD电子表格,WORD的电子表格格式固定死了。
解决方案:利用WORD中的邮件合并功能(推荐使用WORD2007,比2003好用多了,不用不知道!),插入域,如“姓名、性别”等,300份个人信息几分钟就生成。但是在WORD表格中,身份证信息是每一位一个格子,即18个格子,放在18位身份证号,而数据源EXCL中的表格里存放的身份证号18位都在一个格子内。如果利用复制EXCL里的身份证号(1个格子)再粘贴到WORD表格中,也仅占1个格子,达不到占18个格子的要求。解决办法是再手输一遍,其结果不仅费时费力,而且容易出错,导致两份文件中的数据不匹配。
用P解决方法:
1.新建一个文本文件id.txt,将EXCL里身份证信息栏整体拷到该文本内;
2.在同目录下建一个批处理文件,如:ID.bat,将以下几句话保存到里面,代码如下:
  1. @ECHO OFF&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (id.txt) do (
  3.     set str=%%i
  4.     set "num="
  5.     for /l %%a in (0,1,17) do (
  6.         set n=!str:~%%a,1!
  7.         set "num=!num!!n! ")
  8.     echo !num!>>a.txt
  9. )
  10. pause
复制代码
3.运行ID.bat,打开a.txt,里面的身份证18位都被tab键格开。全选,再复制到源文件EXCL里,这样在WORD里就可以一个一个插入身份证信息了。保证数据的一致性,而且节省了许多劳动力。哈哈~自我感觉比较良好。
用文字描述看起来挺烦的,但操作起来也就几个步骤,P很好用啊,小巧实用!
最后感谢站长、创始人,以及指导我学习P的朋友,谢谢你们~

[ 本帖最后由 pumahxh 于 2010-3-26 12:27 编辑 ]
作者: wukaka    时间: 2010-3-25 10:45

这代码是干什么的?
作者: bat007    时间: 2010-3-25 13:07

有兴趣的话,可以再学学VBS或者VBA,说不定可以实现完全自动化。
作者: x9tiancmd    时间: 2010-3-25 15:01

恭喜楼主,学有所用,<( ̄oo, ̄)/
作者: marginal    时间: 2010-3-26 09:52

1.代码问题。
  1. @ECHO OFF&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (id.txt) do (
  3.     set str=%%i
  4.     set "num="
  5.     for /l %%a in (0,1,17) do (
  6.         set n=!str:~%%a,1!
  7.         set "num=!num!!n! ")
  8.     echo !num!>>a.txt
  9. )
  10. pause
复制代码

根据你的意思,代码中的ID.txt应该改为a.txt才对,另外代码倒数第三行中的a.txt,建议改为其它名字,这样可以自动新建一个TXT文件。
2.其实你这个功能用批处理反而走了弯路,excel强大的功能要得到你想要的结果是轻而易举的。在EXCEl中选中身份证那一列,点击数据/分列,分列标准选择固定宽度,拖到鼠标即可实现你要的功能。
作者: pumahxh    时间: 2010-3-26 12:29     标题: 回复 3楼 的帖子

谢谢提醒,确有此意,有机会向你007请教,或者有好的教材推荐指导下。
作者: pumahxh    时间: 2010-3-26 12:34     标题: 回复 5楼 的帖子

十分感谢你看我一堆废话,更要感谢你的建议!
1.代码问题:其实是我在文章中也写错了,新建的文件是id.txt,而a.txt是P生成的一个新文件,用来存放结果。更改已放在顶楼。
2.以前没发现EXCL这个功能。经测试,此功能非常好有用,而且实用。今天又学到一招,郑重感谢!
3.顺便再问一个问题,如果要把这18个格子里的数据合在一个格子里,EXCL里如何简单地实现?前提是数据很多,不能用复制、粘贴的方法,其实就是这段代码的反解功能。当然P很简单,只是还是需要手工倒腾几下。
呵呵,谢谢大家的指导~

[ 本帖最后由 pumahxh 于 2010-3-26 12:42 编辑 ]
作者: Batcher    时间: 2010-3-26 22:19     标题: 回复 5楼 的帖子

Excel真正强大的是VBA,而不是拖鼠标^_^
作者: pichulizhijia_5    时间: 2010-3-31 02:21     标题: 回复 5楼 的帖子

这里侧重的是批处理,不是EXCEL
作者: pumahxh    时间: 2010-3-31 21:25

其实这段时间处理了大量的表格、文档、照片,但完成这些工作,都不可能靠一种工具实现,现实当中,是多种工具的融合、优化组合,选择最简单最实用的方法。应该说,在这里将18个号码分开的最简单的方法是用5楼提到的方法。为了完成这些工作,不仅用到EXCL、WORD的基本功能,为了简化工作,还用到了WORD的邮件合并功能(用过的人就知道,非常强大,数据越多,优势越明显)。但有些工作,光用这些常用工具还是不能实现,比如,我要根据姓名+身份证信息在数百张照片里查找,而且又不认识这些人靠肉眼去找很麻烦,用批处理,一小段话,很快就帮我解决了问题,真是爽啊!
总结:真正工作当中遇到的问题,可能很多时候就像当年高考时的X综合,不会光考你物理知识,就像不单单用到EXCL一样,不能仅凭一门知识来解决,而要依赖多种知识的结合、优化,最终到达最快最简单地解决问题!
在这里,不得不说,正是www.bathome.net教给了我一种解决问题的新方法、好工具。
致敬!

[ 本帖最后由 pumahxh 于 2010-3-31 21:28 编辑 ]
作者: wc726842270    时间: 2010-9-3 02:24

真是非常好的应用实例啊。
作者: Wingl83    时间: 2010-10-19 19:05

原帖由 pumahxh 于 2010-3-26 12:34 发表
十分感谢你看我一堆废话,更要感谢你的建议!
1.代码问题:其实是我在文章中也写错了,新建的文件是id.txt,而a.txt是P生成的一个新文件,用来存放结果。更改已放在顶楼。
2.以前没发现EXCL这个功能。经测试,此功 ...


最简单的是用&连接18个单元格,再用鼠标拖就可以了,其实是有一个连接函数的,但是我忘了……




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2