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

[文本处理] 【已结】求支持拖动处理的批处理代码

假如在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 编辑 ]
1

评分人数

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


Q: 如何用code把代码扩起来?
A: http://bbs.bathome.net/thread-404-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

  如果要以拖曳文件的方式来指定要处理的目录,并且要处理指定目录下的所有文本的话,可以使用如下代码(无论拖曳的是文件还是文件夹,处理的都是指定文件夹下的所有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
复制代码
1

评分人数

    • bakdfkuk: 谢谢,真是一个高手啊!PB + 3 技术 + 1 + 1
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

批处理本来就是为了方便,双击BAT一切搞定不是挺好么,干吗非得拐个弯搞拖动呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  楼主的本意应该是想处理不同目录下的txt,并想以后重复使用,所以不能把路径写死,手工指定更具有灵活性。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

我一向不看好拖拽,一旦出现cd失败、move/del/rd 的参数遇到了空值的情况等,后果不堪设想^_^
如果一定要使用,应该危险操作之前进行周密的判断。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

  当然,如果路径跳转失败,后果将十分严重,这就需要在写代码的时候,多做测试,力求准确兼容各种复杂的情形,这也是可以实现的。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

回复 7楼 的帖子

很有道理的说,方便与不方便看实际的需求而定,并非什么就一定方便什么就一定不方便!

TOP

谢谢!

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

TOP

返回列表