标题: [文本处理] 【已结】求支持拖动处理的批处理代码 [打印本页]
作者: bakdfkuk 时间: 2009-3-3 19:12 标题: 【已结】求支持拖动处理的批处理代码
假如在D盘中有一些文件,其中有一个是1.txt,其中内容如下:
AAAA BBBB
DSAD SDAFASFDSA
ASFSDA ASDFASDFASDFSAD
要把它的各行合并成一行,最后结果是:
AAAABBBB
DSADSDAFASFDSA
ASFSDAASDFASDFASDFSAD
我现在用:- @echo off
- for /f "tokens=1,* delims= " %%i in (d:\2.txt) do (echo %%i%%j>>d:\1.txt)
- 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文件。需要注意的是,路径中不能含有感叹号,并且会把文本中的空行去掉,处理之前,请一定要备份好数据):- @echo off
- set /p str=请把要处理的文件夹拖曳到此处:
- set "str=%str:"=%"
- for %%i in ("%str%") do (
- cd /d %%i 2>nul||cd /d %%~dpi
- )
-
- for /f "delims=" %%i in ('dir /a-d /b *.txt') do (
- cd.>"%%~ni"
- for /f "usebackq delims=" %%j in ("%%i") do (
- set "var=%%j"
- setlocal enabledelayedexpansion
- set "var=!var: =!"
- (echo.!var!)>>"%%~ni"
- endlocal
- )
- move /y "%%~ni" "%%i"
- )
- 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 |