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

[文本处理] (已解决)如何避免批处理for命令重复读取数据?

本帖最后由 lijinpengying 于 2013-8-1 11:27 编辑

是这样的,我这里有很多个文本文档,例如a.txt b.txt c.txt ……*.txt
现在我想要把文档里面每一行都加上特殊字符,例如[]
a.txt
123
1234
12345
123456
处理后a.txt
[123]
[1234]
[12345]
[123456]
关键是用很多个文档,我的代码如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (*.txt) do (
  3. echo. >%%~ni2%%~xi
  4. call :ext >>%%~ni2%%~xi
  5. )
  6. pause
  7. :ext
  8. for /f %%j in ('type *.txt') do (
  9. echo ^-^[%%j^]^-
  10. )
复制代码
结果是把每一行都加上了我想要的字符,可是它是重复的,里面有多少个文档,它就有多少行那些字符,比如我现在有四个文本,那么a.txt:
[123]
[1234]
[12345]
[123456]
[123]
[1234]
[12345]
[123456]
[123]
[1234]
[12345]
[123456]
[123]
[1234]
[12345]
[123456]
[123]
[1234]
[12345]
[123456]
各位,请问如何才能避免这样的事情发生了,我只是想要一个就行了,当然如果只处理一个文本很容易,可是我要同时处理多个文本……谢谢大家……
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off
  2. for "delims=" %%i in ('dir /b *.txt') do (
  3.     (for /f "usebackq delims=" %%j in ("%%i") do (
  4.         echo,[%%j]
  5.     ))>%%~ni2%%~xi
  6. )
复制代码
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

  1. @echo off
  2. for /r %%a in (*.txt) do (
  3. for /f %%b in (%%a) do (
  4. echo [%%b]>>%%~na.log
  5. )
  6. del %%a
  7. )
  8. for /r %%a in (*.log) do (ren %%a %%~na.txt)
复制代码
1

评分人数

TOP

输出文件的后缀名为 txt 的话建议不要用 for %%i in (*.txt) do,这里会对新增的 txt 遍历
而 type *.txt 的输出内容...你在 cmd 里运行一下就知道了

TOP

回复 4# CrLf


    谢谢大大!小子受教了!辛苦了哈!

TOP

回复 3# 522235677


    谢谢你!

TOP

回复 2# gawk


    久仰您的大名,您能来回答,表示万分感谢!谢谢!

TOP

回复 2# gawk


    可能是复制代码错误,试验没有成功……

TOP

回复 6# lijinpengying


    您的代码成功了!哦耶!

TOP

回复 3# 522235677


    呜呜,还是有问题啊,你把我那个盘符下所有的文本文档都加上了符号……

TOP

回复 8# lijinpengying


    具体是怎么不成功呢?请详细描述一下
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 10# lijinpengying


    放在要处理的文件夹里,干嘛放根目录呢

TOP

返回列表