标题: [文本处理] 批处理怎样替换文本文件回车符? [打印本页]
作者: fxby 时间: 2014-11-15 15:12 标题: 批处理怎样替换文本文件回车符?
大家好!我是新手,有个问题,诚恳向各位请教。文件:时间.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:26
本帖最后由 neorobin 于 2014-11-15 16:32 编辑
- @echo off & chcp 936
- setlocal enabledelayedexpansion
- >时间_new.txt ( for /f "delims=" %%a in (时间.txt) do echo;%%a | find ":" >nul && (set t=%%a)||(echo;!t:~0,-1!%%a) )
- start 时间_new.txt
复制代码
作者: fxby 时间: 2014-11-15 18:14
回复 2# neorobin
谢谢!不过,没有达到预期的结果。
复制代码,保存为bat,运行后,原文件未改变,生成的时间_new.txt是个空文件。
作者: neorobin 时间: 2014-11-15 19:03
回复 3# fxby
我在 Win7 和 Win XP 上都测试过, 都能得到需要的结果.
你有没有把BAT文件和要处理的文件放在一个目录.
如果在一个目录还不行, 请把首行的
echo off
改成
echo on
在最后一行下面加一行
pause
把看到的任何错误信息发上来
作者: fxby 时间: 2014-11-15 21:02
回复 4# neorobin
仍然不行
作者: neorobin 时间: 2014-11-15 21:13
回复 5# fxby
是你复制代码的问题, 2 楼的代码一共只有 4 行, 而你把第 3 行代码给切分了
用代码框下面的 "复制代码" 的链接即可将代码复制到剪贴板, 然后在文本编辑器中粘贴.
无论何种复制方式, 你都要保持代码的原始逻辑结构!
作者: CrLf 时间: 2014-11-15 21:27
txt 是什么编码格式?估计楼主的文件是 utf-8 或 unicode
作者: neorobin 时间: 2014-11-15 21:47
本帖最后由 neorobin 于 2014-11-15 21:52 编辑
回复 7# CrLf
是 ANSI 格式, 是他把第 3 行代码错误切成了两行造成的
作者: fxby 时间: 2014-11-16 10:10
回复 8# neorobin
我是新手,给大家添麻烦了。改了,还是不行。原来就是复制下来,因为不行,才加换行。现在直接点复制,运行结果:
同时,打开了新文件,是空的。
作者: fxby 时间: 2014-11-16 10:18
回复 8# neorobin
能不能用VB编程?把
01,08:20:21,08:22:26,,
姓名1
替换成:
01,08:20:21,08:22:26,姓名1
再将时间.txt,改名为 时间.csv,并复制到C:\。如果C:\ 时间.csv已存在,再次复制时,直接覆盖,不提示。全部在后台运行。
作者: ads350668398 时间: 2014-11-16 10:22
要不我 试试[元文件发上来]
作者: fxby 时间: 2014-11-16 10:50
回复 11# ads350668398
最好能用VB写。替换后将时间.txt,改名为 时间.csv,并复制到C:\。如果C:\ 时间.csv已存在,再次复制时,直接覆盖,不提示。全部在后台运行。
作者: neorobin 时间: 2014-11-16 11:10
回复 9# fxby
你不懂当前目录的概念
你启动了命令行, 当前目录是
C:\Users\hh
然后键入了批处理的全路径, 启动了批处理, 你的数据文件不在当前目录, 当然会出现
"系统找不到文件 时间.txt。"
以下三种方式, 任选其一, 你再看看:
A.
保证数据文件和批处理文件在同一个目录, 直接双击批处理文件运行.
B.
你想在命令行键入批处理路径运行, 代码就这样(同样要保证数据文件和批处理文件在同一个目录)- @echo off & chcp 936
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- >时间_new.txt ( for /f "delims=" %%a in (时间.txt) do echo;%%a | find ":" >nul && (set t=%%a)||(echo;!t:~0,-1!%%a) )
- start 时间_new.txt
复制代码
C.
把代码中数据文件的相对路径改成绝对路径, 假如你的数据文件全路径为(假设路径中没有任何空格):
C:\Users\hh\Desktop\时间.txt
那么用这个代码:- @echo off & chcp 936
- setlocal enabledelayedexpansion
- >时间_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) )
- start 时间_new.txt
复制代码
如果数据文件全路径包含空格, 代码得变成另外的样子, 就不说了.
作者: neorobin 时间: 2014-11-16 11:18
回复 10# fxby
你的要求并不复杂, 批处理完全可以解决, 而且批处理保存及修改都非常方便.
但最大的问题是你连操作系统的一些最基本的概念都没有掌握, 即使 别人为你提供了工具, 你却怎么用都不会.
作者: neorobin 时间: 2014-11-16 11:34
回复 10# fxby
仅针对你在此楼提出的要求- @echo off & chcp 936 & setlocal enabledelayedexpansion
- del /f /q "C:\时间.csv"
- >"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) )
复制代码
作者: fxby 时间: 2014-11-16 11:35
回复 14# neorobin
在DOS时代,我是折腾过批处理之类的事,觉得不深,时间长了忘了,替换回车符无从下手。
谢谢你的耐心和指点!你刚才发的我在XP和WIN7上都试过,还有问题,运行后弹出窗口,如下:
作者: neorobin 时间: 2014-11-16 11:39
本帖最后由 neorobin 于 2014-11-16 11:41 编辑
回复 16# fxby
我是以你的原文件内容如下来处理的- 01,08:20:21,08:22:26,,
- 姓名1
- 02,08:24:21,09:45:34,,
- 姓名2
- 03,09:26:43,09:55:01,,
- 姓名3
- 04,09:44:33,09:56:55,,
- 姓名4
复制代码
难道 这些:
"原文件内容:"
"替换成:"
都是你原文件的内容吗???
作者: fxby 时间: 2014-11-16 15:47
回复 15# neorobin
非常感谢!!!
我以前简单地学过DOS和数据库,现业余爱好做些平面和多媒体。近段时间琢磨一个小软件,纯粹是从零开始。软件已经基本能用,想再完善一下。
我把以上内容再学习、消化一下。谢谢!
作者: fxby 时间: 2014-11-17 18:40
回复 17# neorobin
可能是我没说清楚。原文件内容为:
01,2014-11-15,20:39:22,,
20:39:23
替换后文件内容应为:
01,2014-11-15,20:39:22,20:39:23
两者之间的差别就是把原文件任意一行后面的 “,+回车符”替换为“,”,而原文件内的其它内容不变。
作者: CrLf 时间: 2014-11-17 21:12
纯批:- @echo off
- setlocal enabledelayedexpansion
- (for /f "delims=0123456789 eol=," %%a in (时间.txt) do (
- set /p "a=" & set /p "b="
- echo !a:,,=,!!b!
- ))<时间.txt >时间_new.txt
- start 时间_new.txt
复制代码
正则:- @set @bathome=1;/*&echo off
- cscript -nologo -e:jscript %0 <时间.txt >时间_new.txt
- start 时间_new.txt
- pause & exit /b */
- var text = WScript.StdIn.ReadAll()
- WScript.Echo(text.replace(/,\r?\n/g,''))
复制代码
作者: fxby 时间: 2014-11-18 18:37
回复 20# CrLf
谢谢!
作者: ads350668398 时间: 2014-11-18 20:42
回复 12# fxby
什么 vb啊 晕 不会啊算了 我还是想想自己的问题吧
作者: DAIC 时间: 2014-11-18 22:06
回复 22# ads350668398
不会就看教程:
http://bbs.bathome.net/thread-13347-1-1.html
作者: samchang2006 时间: 2019-5-17 09:27
回复 20# CrLf
参考下,正巧遇到这问题。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |