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

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

[复制链接]
发表于 2014-1-2 16:40:01 | 显示全部楼层 |阅读模式
程序代码
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;;

请问如何解决?谢谢!
发表于 2014-1-2 16:53:42 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2014-1-2 17:13:57 | 显示全部楼层
回复 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;
发表于 2014-1-2 17:41:21 | 显示全部楼层
回复 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
复制代码
发表于 2014-1-2 19:14:07 | 显示全部楼层

  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:16 | 显示全部楼层
本帖最后由 悬崖之树 于 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
复制代码
发表于 2014-1-2 22:03:42 | 显示全部楼层
@echo off
for /f %%i in (成都信息.txt) do echo %%i;>>ret.txt
pause

就这个就搞定了 有那么难吗
发表于 2014-1-2 22:42:14 | 显示全部楼层
回复 5# 1270697389

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

还有 生成的文件的扩展名肯定是.txt,为什么还要%%~xa 呢?
发表于 2014-1-3 08:11:38 | 显示全部楼层
回复 7# wokong


    楼主需要处理很多个文件
发表于 2014-1-3 08:15:01 | 显示全部楼层
回复 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
复制代码

评分

参与人数 1技术 +1 收起 理由
isc2010 + 1 谢谢

查看全部评分

发表于 2014-1-3 17:35:37 | 显示全部楼层
很好 学习了 水电费
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 22:36 , Processed in 0.033769 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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