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

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

请教几个问题,原格式如下:
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中修改 保存。
新人 请高手指点!

回复 8# terse
  感谢!

TOP

回复 9# zjfy22

我这里怎么没有 8楼的代码

TOP

回复 8# terse
谢谢,原始档案不变,现想要实现结果2  要如果修改,
我将上面的代码加入后,在换行前面会有一个逗号,

TOP

本帖最后由 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
复制代码

TOP

回复 2# terse


感谢!另外请教一下,如何将每列间的制表符替换成 ,分隔?

TOP

回复 4# zjfy22
行尾的制表符处理掉了
代码修正在2楼

TOP

回复 4# zjfy22
很适合sed解决的问题,就不必妄求批处理了。
  1. sed -i "s/NULL\t/NULL\n/g" d:\files\*.txt
复制代码
看得多说得多,远比不上写得多。

TOP

感谢2楼回复,不过问题没解决,已上传原始档案 和结果档案。希望 高手帮忙 感谢~~

TOP

如果2楼的代码没能解决问题,请把你的原始文件压缩一下传上来,以便大家测试。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 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
复制代码

TOP

返回列表