找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32201|回复: 13

[文本处理] [已解决]批处理怎样让txt文件标题都在最左边?

[复制链接]
发表于 2011-1-27 07:15:40 | 显示全部楼层 |阅读模式
求一批处理程序:我的文件夹中有诺干txt文件。我要把这些文件的第一行左边的空格全去掉。让标题在最左边。文件中的第一行标题有的在最左边,有的在中间。我要把在中间的都改成在最左边,谢谢

  我传个附件解释一下。附件中有文件类型1和文件类型2. 1是正常的。2的标题很长,前面有空格,我想因为文章正文的标题在中间的原因,我用 a.bat程序提取文章正文第一行作为TXT文件的标题。提取出来就是这样子。现在我要把类型2都变成类型1 就好了。yyy.bat是11楼给的。标题还是没改啊。不知道我说的是不是清楚,请高手帮下忙。

评分

参与人数 1PB +2 收起 理由
hanyeguxing + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-1-27 07:44:09 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%f in ('dir /a:-d /b *.txt') do (
  3.     set /p var=<"%%f"
  4.     SetLocal EnableDelayedExpansion
  5.     for /f "tokens=*" %%a in ("!var!") do (
  6.         EndLocal
  7.         echo,%%a
  8.         more +1 "%%f"
  9.     ) >.tmp
  10.     move .tmp "%%f"
  11. )
复制代码
 楼主| 发表于 2011-1-27 09:26:15 | 显示全部楼层
天啊。这么快。高手啊。谢谢
 楼主| 发表于 2011-1-27 09:36:15 | 显示全部楼层
我保存为.bat,不能运行啊
发表于 2011-1-27 10:58:04 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /r %%i in (*.txt) do (
  4.         set "file=%%i"
  5.         set /a count=1
  6.         cd.>!file!.tmp
  7.         for /f "delims=" %%j in (!file!) do (
  8.                 set "line=%%j"
  9.                 set "line_bak=!line!"
  10.                 echo !count!
  11.                 call :intercept
  12.                 if defined line (
  13.                         if !count! EQU 1 (
  14.                                 echo !line! 2>nul>>!file!.tmp
  15.                         ) else (
  16.                                 echo !line_bak! 2>nul>>!file!.tmp
  17.                         )
  18.                 )else (
  19.                         echo\>>!file!.tmp
  20.                         if !count! EQU 1 set /a count-=1
  21.                 )
  22.                 set /a count+=1
  23.         )
  24.         move /y !file!.tmp !file!
  25. )
  26. pause
  27. goto :eof
  28. :intercept
  29. if "!line:~0,1!"==" " set "line=!line:~1!"&goto intercept
复制代码
代码效果:
1、保存了标题所在行之前的空白行
2、文本中的特殊字符不能处理
发表于 2011-1-27 11:17:19 | 显示全部楼层
原帖由 darkangelz 于 2011-1-27 09:36 发表
我保存为.bat,不能运行啊

将2楼的代码改了下,可以用了,他的更高效简洁,跟着学习了
  1. @echo off
  2. for /f "delims=" %%f in ('dir /a-d /b *.txt') do (
  3.         set "var=%%f"
  4.         SetLocal EnableDelayedExpansion
  5.         for /f "tokens=*" %%a in (!var!) do (
  6.                 set "line=%%a"
  7.                 echo !line!        
  8.                 goto end
  9.         ) >.tmp
  10. :end
  11.         more +1 !var!>>.tmp
  12.         move .tmp !var!
  13. )        
  14. echo ok
  15. pause
复制代码
希望你说的左边全是空格,没有包含制表符,这种情况没有 处理

[ 本帖最后由 liion631818 于 2011-1-27 11:20 编辑 ]
 楼主| 发表于 2011-1-27 12:19:28 | 显示全部楼层
不行啊。可能我没说清楚。仔细解释一下:我的文件夹里有很多txt文件。这些文件的标题有的排在第一行的最左边。有的在中间。我运行了一个批处理文件。统一提取第一行作为标题。大部分都正常。可有一部分标题提取出来后非常的长,前面都是空格。我发现这些文件标题都是在原TXT文件第一行中间的。我想是不是标题在文章中间,提取出来的标题会连前面的空白一起被提取出来作为新标题。所以我要去掉这些标题前面的空白,好运行第一个批处理程序,让标题正常显示出来。谢谢
发表于 2011-1-27 12:57:34 | 显示全部楼层
你好好看下,是不是那个空白是制表符,如果不是空格上面的代码没法处理,前面已经说过了
至于你说标题在中间,如果前面全是空格,也是可以转换的
 楼主| 发表于 2011-1-27 13:26:58 | 显示全部楼层
不是。我手动改了几个。把标题前面的空格删除,在提取就正常了。
发表于 2011-1-27 13:58:45 | 显示全部楼层
你把那些没正确处理的文件,用附件发出来吧
发表于 2011-1-27 22:12:12 | 显示全部楼层
你 1 楼的意思是:修改文件——去除第一行左边的空格
7 楼的意思似乎是:提取标题

提取第一行文字,并去除左边的空格和制表符:
  1. @echo off
  2. for /f "delims=" %%f in ('dir /a:-d /b *.txt') do (
  3.     set /p var=<"%%f"
  4.     SetLocal EnableDelayedExpansion
  5.     for /f "eol= tokens=*" %%a in ("!var!") do (
  6.         EndLocal
  7.         echo,%%a
  8.     )
  9. )
  10. pause
复制代码

[ 本帖最后由 tmplinshi 于 2011-1-27 22:20 编辑 ]
发表于 2011-1-28 12:43:56 | 显示全部楼层

回复 7楼 的帖子

请在顶楼详细描述一下你的问题,并上传附件让大家做测试。
发表于 2011-1-28 18:08:51 | 显示全部楼层

回复 1楼 的帖子

那个既不是空格也不是TAB。。论坛不能显示这个“空格”和TAB,请下载附件。

这个“空格”放在代码标签被显示成了:
  1. &#58566;
复制代码
  1. @echo off
  2. for /f "delims=" %%f in ('dir /a:-d /b *.txt') do (
  3.     set /p var=<"%%f"
  4.     SetLocal EnableDelayedExpansion
  5.     for /f "tokens=* delims=&#58566;         " %%a in ("!var!") do (
  6.         EndLocal
  7.         echo,%%a
  8.         more +1 "%%f"
  9.     ) >.tmp
  10.     move .tmp "%%f"
  11. )
复制代码

[ 本帖最后由 tmplinshi 于 2011-1-28 18:57 编辑 ]

评分

参与人数 1技术 +1 收起 理由
hanyeguxing + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-1-29 07:36:41 | 显示全部楼层
谢谢。已经完美解决了。真是太棒了。非常感谢

[ 本帖最后由 darkangelz 于 2011-1-29 14:58 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 23:02 , Processed in 0.016638 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表