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

[文本处理] 批处理如何将文档中的null + 之后的制表符 替换为换行符?

[复制链接]
发表于 2013-9-17 14:42:40 | 显示全部楼层 |阅读模式
请教几个问题,原格式如下:
1053        001        09-04-2013 13:20:11        460.0000        0        NULL        HOT        1053        001
1053        002        09-04-2013 14:39:53        863.0000        0        NULL        HOT        1053        002


1、 如何将指定文件夹(D:\File\)下的所有的txt替换,不知道txt的 名称,将文本中NULL和后面的制表符替换成换行符(格式如下)

1053        001        09-04-2013 13:20:11        460.0000        0
HOT        1053        001
1053        002        09-04-2013 14:39:53        863.0000        0       
HOT        1053        002
2. 不生成新的txt 直接在原txt中修改 保存。
新人 请高手指点!
发表于 2013-9-17 15:06:35 | 显示全部楼层
本帖最后由 terse 于 2013-9-18 13:32 编辑

不处理特殊字符
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=U" %%a in ('cmd /u /c echo 唉') do set "tab=%%a"
  3. for /f "tokens=*" %%a in ('dir /b /a-d d:\file\*.txt') do (
  4.         (for /f "usebackq  delims=" %%i in ("%%a") do (
  5.            set "str=%%i"
  6.             set str=!str:%tab%null=^

  7.         !
  8.         for /f "tokens=*" %%j in ("!str!") do echo %%j
  9.         ))>$
  10.         move $ "%%a"
  11. )
  12. pause
复制代码
先FINDSTR处理下
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=U" %%a in ('cmd /u /c echo 唉') do set "tab=%%a"
  3. set "ph=d:\file"
  4. for /f "tokens=*" %%a in ('findstr /imc:"%tab%null" %ph%\*.txt') do (
  5.         (for /f "usebackq  delims=" %%i in ("%%a") do (
  6.            set "str=%%i"
  7.             set str=!str:%tab%null=^

  8.         !
  9.         for /f "tokens=*" %%j in ("!str!") do echo %%j
  10.         ))>$
  11.         move $  "%%a"
  12. )
  13. pause
复制代码
发表于 2013-9-17 15:41:57 | 显示全部楼层
如果2楼的代码没能解决问题,请把你的原始文件压缩一下传上来,以便大家测试。
 楼主| 发表于 2013-9-18 11:26:39 | 显示全部楼层
感谢2楼回复,不过问题没解决,已上传原始档案 和结果档案。希望 高手帮忙 感谢~~
发表于 2013-9-18 11:52:51 | 显示全部楼层
回复 4# zjfy22
很适合sed解决的问题,就不必妄求批处理了。
  1. sed -i "s/NULL\t/NULL\n/g" d:\files\*.txt
复制代码
发表于 2013-9-18 13:19:56 | 显示全部楼层
回复 4# zjfy22
行尾的制表符处理掉了
代码修正在2楼
 楼主| 发表于 2013-9-18 14:13:35 | 显示全部楼层
回复 2# terse


感谢!另外请教一下,如何将每列间的制表符替换成 ,分隔?
发表于 2013-9-18 14:17:46 | 显示全部楼层
本帖最后由 terse 于 2013-9-18 14:38 编辑

回复 7# zjfy22
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=U" %%a in ('cmd /u /c echo 唉') do set "tab=%%a"
  3. set "ph=d:\file"
  4. for /f "tokens=*" %%a in ('findstr /imc:"%tab%null" %ph%\*.txt') do (
  5.         (for /f "usebackq  delims=" %%i in ("%%a") do (
  6.            set "str=%%i"
  7.         set "str=!str:%tab%=,!"
  8.            set str=!str:,null=^

  9. !
  10.         for /f "tokens=* delims=," %%j in ("!str!") do echo %%j
  11.         ))>$
  12.         move $  "%%a"
  13. )
  14. pause
复制代码
 楼主| 发表于 2013-9-18 14:55:48 | 显示全部楼层
回复 8# terse
谢谢,原始档案不变,现想要实现结果2  要如果修改,
我将上面的代码加入后,在换行前面会有一个逗号,
发表于 2013-9-18 15:33:37 | 显示全部楼层
回复 9# zjfy22

我这里怎么没有 8楼的代码
 楼主| 发表于 2013-9-18 15:46:48 | 显示全部楼层
回复 8# terse
  感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 22:58 , Processed in 0.020648 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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