Board logo

标题: [文本处理] 批处理将txt文件每行的最后加一个分号,程序解惑 [打印本页]

作者: isc2010    时间: 2014-1-2 16:40     标题: 批处理将txt文件每行的最后加一个分号,程序解惑

程序代码
FOR %%j IN (*.txt) DO FOR /F "tokens=* delims=" %%i IN (%%j) DO ECHO %%i; >>new.txt
start new.txt

我的本意是想通过批处理将txt文件每行的最后加一个分号
比如,现在有个11.txt文件,里面内容如下:
111111111
2222222222222222
33333333333333333
444444444444
通过批处理,我想让每行末端增加一个分号,变为
111111111;
2222222222222222;
33333333333333333;
444444444444;

但是通过我上述程序,出现问题,输出结果为

111111111;
2222222222222222;
33333333333333333;
444444444444;
111111111;;
2222222222222222;;
33333333333333333;;
444444444444;;

请问如何解决?谢谢!
作者: DAIC    时间: 2014-1-2 16:53

  1. @echo off
  2. (for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  3.     for /f "usebackq tokens=*" %%j in ("%%i") do (
  4.         echo %%i;
  5.     )
  6. ))>new.txt
  7. start new.txt
复制代码

作者: isc2010    时间: 2014-1-2 17:13

回复 2# DAIC


    你好,谢谢你的回答,不过我复制代码运行以后,出现如下内容

11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
11.txt;
作者: DAIC    时间: 2014-1-2 17:41

回复 3# isc2010
  1. @echo off
  2. (for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  3.     for /f "usebackq tokens=*" %%j in ("%%i") do (
  4.         echo %%j;
  5.     )
  6. ))>new.txt
  7. start new.txt
复制代码

作者: 1270697389    时间: 2014-1-2 19:14

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%a in ('dir /b /a-d *.txt') do (
  4. for /f %%i in (%%a) do echo %%i;>>%%~dpna_1%%~xa
  5. )
  6. pause
复制代码

作者: 悬崖之树    时间: 2014-1-2 22:01

本帖最后由 悬崖之树 于 2014-1-2 22:43 编辑

出现
111111111;
2222222222222222;
33333333333333333;
444444444444;
111111111;;
2222222222222222;;
33333333333333333;;
444444444444;;

的原因是新生成的new.txt也被归入(*.txt)里了。如果要把当前目录下所有的txt文件的内容修改后集中保存在new.txt里的话可以这样:
  1. @echo off
  2. for %%j in (*.txt) do (
  3. for /f %%i in (%%j) do echo %%i;>>new
  4. )
  5. ren new new.txt
  6. start new.txt
复制代码

作者: wokong    时间: 2014-1-2 22:03

@echo off
for /f %%i in (成都信息.txt) do echo %%i;>>ret.txt
pause

就这个就搞定了 有那么难吗
作者: 悬崖之树    时间: 2014-1-2 22:42

回复 5# 1270697389

貌似不用开启变量延迟扩展吧!

还有 生成的文件的扩展名肯定是.txt,为什么还要%%~xa 呢?
作者: DAIC    时间: 2014-1-3 08:11

回复 7# wokong


    楼主需要处理很多个文件
作者: DAIC    时间: 2014-1-3 08:15

回复 6# 悬崖之树

把重定向放在外面可以提高效率
  1. @echo off
  2. (for %%j in (*.txt) do (
  3.     for /f %%i in (%%j) do echo %%i;
  4. ))>new
  5. ren new new.txt
  6. start new.txt
复制代码

作者: wokong    时间: 2014-1-3 17:35

很好 学习了 水电费




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2