Board logo

标题: [文本处理] 【已结】求支持拖动处理的批处理代码 [打印本页]

作者: bakdfkuk    时间: 2009-3-3 19:12     标题: 【已结】求支持拖动处理的批处理代码

假如在D盘中有一些文件,其中有一个是1.txt,其中内容如下:
AAAA   BBBB
DSAD   SDAFASFDSA
ASFSDA   ASDFASDFASDFSAD
要把它的各行合并成一行,最后结果是:
AAAABBBB
DSADSDAFASFDSA
ASFSDAASDFASDFASDFSAD
我现在用:
  1. @echo off
  2. for /f "tokens=1,* delims= " %%i in (d:\2.txt) do (echo %%i%%j>>d:\1.txt)
  3. pause
复制代码
能处理出结果,但是处理后存在两个问题:第一是文件名不同,又要改回来,第二是我有太多的这类文件,如果一个一个的改文件名来处理的话太麻烦了,有没有办法设计一个支持拖动的批处理而且处理后不仅文件名相同.望大家帮我想想办法,先先谢谢了.【已结】

[ 本帖最后由 bakdfkuk 于 2009-3-5 10:24 编辑 ]
作者: Batcher    时间: 2009-3-3 19:43

本版规则
1、求代码、寻求代码解释、探讨代码得失的帖子均可发在本版块,其余话题禁止在本版讨论;
2、求助时,务必在顶楼一次性把问题交代清楚;若文字难以表述,请配图说明,或是上传附件;但是,一切操作应从节约论坛资源的角度出发,能文字说明清楚的就无需再发图片,小图能说明问题的尽量不截全图,在不影响效果的前提下尽量压缩图片及附件;
3、所发代码若不止一行,请务必用code标记把代码部分首尾括起来,以便他人复制;


Q: 如何用code把代码扩起来?
A: http://bbs.bathome.net/thread-404-1-1.html
作者: namejm    时间: 2009-3-3 21:25

  你要合并的不是各行,而是去掉各行中的所有空格吧?

  如果要以拖曳文件的方式来指定要处理的目录,并且要处理指定目录下的所有文本的话,可以使用如下代码(无论拖曳的是文件还是文件夹,处理的都是指定文件夹下的所有txt文件,比如拖曳的是:d:\test\abc.txt,那么,处理的将是d:\test下的所有txt文件。需要注意的是,路径中不能含有感叹号,并且会把文本中的空行去掉,处理之前,请一定要备份好数据):
  1. @echo off
  2. set /p str=请把要处理的文件夹拖曳到此处:
  3. set "str=%str:"=%"
  4. for %%i in ("%str%") do (
  5.     cd /d %%i 2>nul||cd /d %%~dpi
  6. )
  7. for /f "delims=" %%i in ('dir /a-d /b *.txt') do (
  8.     cd.>"%%~ni"
  9.     for /f "usebackq delims=" %%j in ("%%i") do (
  10.         set "var=%%j"
  11.         setlocal enabledelayedexpansion
  12.         set "var=!var: =!"
  13.         (echo.!var!)>>"%%~ni"
  14.         endlocal
  15.     )
  16.     move /y "%%~ni" "%%i"
  17. )
  18. pause
复制代码

作者: Batcher    时间: 2009-3-3 23:01

批处理本来就是为了方便,双击BAT一切搞定不是挺好么,干吗非得拐个弯搞拖动呢?
作者: namejm    时间: 2009-3-3 23:23

  楼主的本意应该是想处理不同目录下的txt,并想以后重复使用,所以不能把路径写死,手工指定更具有灵活性。
作者: Batcher    时间: 2009-3-3 23:33

我一向不看好拖拽,一旦出现cd失败、move/del/rd 的参数遇到了空值的情况等,后果不堪设想^_^
如果一定要使用,应该危险操作之前进行周密的判断。
作者: namejm    时间: 2009-3-4 00:40

  我倒觉得拖曳操作十分方便,因为它可以自行指定路径,使得代码无需修改就能在不同位置得到重复利用——若是使用相对路径,还得把批处理文件复制到要处理的目录下,十分不便。

  当然,如果路径跳转失败,后果将十分严重,这就需要在写代码的时候,多做测试,力求准确兼容各种复杂的情形,这也是可以实现的。
作者: 愚无尽    时间: 2009-3-4 12:45     标题: 回复 7楼 的帖子

很有道理的说,方便与不方便看实际的需求而定,并非什么就一定方便什么就一定不方便!
作者: bakdfkuk    时间: 2009-3-5 10:22     标题: 谢谢!

谢谢了,帮了我不小的忙,真是很感谢!




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