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

[文本处理] 批处理怎样替换文本文件回车符?

大家好!我是新手,有个问题,诚恳向各位请教。文件:时间.txt,原内容如下:
01,08:20:21,08:22:26,,
姓名1
02,08:24:21,09:45:34,,
姓名2
..........

希望通过DOS批处理转换为: 
01,08:20:21,08:22:26,姓名1
02,08:24:21,09:45:34,姓名2
..........

哪位高手能帮忙写个DOS批处理,谢谢!!!

本帖最后由 neorobin 于 2014-11-15 16:32 编辑
  1. @echo off & chcp 936
  2. setlocal enabledelayedexpansion
  3. >时间_new.txt ( for /f "delims=" %%a in (时间.txt) do echo;%%a | find ":" >nul && (set t=%%a)||(echo;!t:~0,-1!%%a) )
  4. start 时间_new.txt
复制代码

TOP

回复 2# neorobin
  谢谢!不过,没有达到预期的结果。
  复制代码,保存为bat,运行后,原文件未改变,生成的时间_new.txt是个空文件。

TOP

回复 3# fxby


我在 Win7 和 Win XP 上都测试过, 都能得到需要的结果.

你有没有把BAT文件和要处理的文件放在一个目录.

如果在一个目录还不行, 请把首行的
echo off
改成
echo on
在最后一行下面加一行
pause
把看到的任何错误信息发上来

TOP

回复 4# neorobin


    仍然不行

TOP

回复 5# fxby


是你复制代码的问题, 2 楼的代码一共只有 4 行, 而你把第 3  行代码给切分了

用代码框下面的  "复制代码" 的链接即可将代码复制到剪贴板, 然后在文本编辑器中粘贴.

无论何种复制方式, 你都要保持代码的原始逻辑结构!

TOP

txt 是什么编码格式?估计楼主的文件是 utf-8 或 unicode

TOP

本帖最后由 neorobin 于 2014-11-15 21:52 编辑

回复 7# CrLf

是 ANSI 格式, 是他把第 3 行代码错误切成了两行造成的

TOP

回复 8# neorobin
  我是新手,给大家添麻烦了。改了,还是不行。原来就是复制下来,因为不行,才加换行。现在直接点复制,运行结果:

同时,打开了新文件,是空的。

TOP

回复 8# neorobin
  能不能用VB编程?把
01,08:20:21,08:22:26,,
姓名1
  替换成:
01,08:20:21,08:22:26,姓名1

再将时间.txt,改名为 时间.csv,并复制到C:\。如果C:\ 时间.csv已存在,再次复制时,直接覆盖,不提示。全部在后台运行。

TOP

要不我 试试[元文件发上来]

TOP

回复 11# ads350668398


最好能用VB写。替换后将时间.txt,改名为 时间.csv,并复制到C:\。如果C:\ 时间.csv已存在,再次复制时,直接覆盖,不提示。全部在后台运行。

TOP

回复 9# fxby

你不懂当前目录的概念

你启动了命令行, 当前目录是
C:\Users\hh
然后键入了批处理的全路径, 启动了批处理, 你的数据文件不在当前目录, 当然会出现
"系统找不到文件 时间.txt。"

以下三种方式,  任选其一,  你再看看:
A.
保证数据文件和批处理文件在同一个目录, 直接双击批处理文件运行.

B.
你想在命令行键入批处理路径运行, 代码就这样(同样要保证数据文件和批处理文件在同一个目录)
  1. @echo off & chcp 936
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. >时间_new.txt ( for /f "delims=" %%a in (时间.txt) do echo;%%a | find ":" >nul && (set t=%%a)||(echo;!t:~0,-1!%%a) )
  5. start 时间_new.txt
复制代码
C.
把代码中数据文件的相对路径改成绝对路径, 假如你的数据文件全路径为(假设路径中没有任何空格):
C:\Users\hh\Desktop\时间.txt
那么用这个代码:
  1. @echo off & chcp 936
  2. setlocal enabledelayedexpansion
  3. >时间_new.txt ( for /f "delims=" %%a in (C:\Users\hh\Desktop\时间.txt) do echo;%%a | find ":" >nul && (set t=%%a)||(echo;!t:~0,-1!%%a) )
  4. start 时间_new.txt
复制代码
如果数据文件全路径包含空格, 代码得变成另外的样子, 就不说了.

TOP

回复 10# fxby

你的要求并不复杂, 批处理完全可以解决, 而且批处理保存及修改都非常方便.
但最大的问题是你连操作系统的一些最基本的概念都没有掌握, 即使 别人为你提供了工具, 你却怎么用都不会.

TOP

回复 10# fxby

仅针对你在此楼提出的要求
  1. @echo off & chcp 936 & setlocal enabledelayedexpansion
  2. del /f /q "C:\时间.csv"
  3. >"C:\时间.csv" ( for /f "useback delims=" %%a in ("C:\Users\hh\Desktop\时间.txt") do echo;%%a | find ":" >nul && (set t=%%a)||(echo;!t:~0,-1!%%a) )
复制代码

TOP

返回列表