标题: [文件操作] 批处理怎样合并同名文件? [打印本页]
作者: zhjg5961 时间: 2013-6-10 19:55 标题: 批处理怎样合并同名文件?
老师:能不能把“Base文件夹”下面的同名字的文件(后缀名不一样)合并成一个.TXT文件放到一个文件夹中?
作者: CrLf 时间: 2013-6-10 21:43
本帖最后由 CrLf 于 2013-6-10 22:42 编辑
举个栗子- @echo off
- cd /d d:\base\
- (for /r %%a in (*) do type "%%a">>"d:\base\%%~na_合并.txt")2>nul
- pause
复制代码
作者: zhjg5961 时间: 2013-6-11 13:15
回复 2# CrLf
不行,提示“系统找不到文件”。
作者: Batcher 时间: 2013-6-13 21:21
回复 3# zhjg5961
你的base文件夹的完整路径是什么?如果描述不清楚,请给个截图。
作者: Batcher 时间: 2013-6-13 21:35
回复 5# zhjg5961
代码保存为test.bat
把test.bat放到base文件夹里面- @echo off
- cd /d "%~dp0"
- for %%a in (*) do (
- type "%%a" >> "拷贝并合并的文件\%%~na.txt"
- )
复制代码
作者: zhjg5961 时间: 2013-6-13 21:41
回复 6# Batcher
不对,啥也没有拷贝出来
作者: Batcher 时间: 2013-6-13 21:46
回复 7# zhjg5961 - cd /d "%~dp0"
- for %%a in (*) do (
- echo "%%a" "..\拷贝并合并的文件\%%~na.txt"
- type "%%a" >> "..\拷贝并合并的文件\%%~na.txt"
- pause
- )
- pause
复制代码
1、确保这个test.bat的编码格式是ANSI
2、把执行过程贴出来看看
作者: zhjg5961 时间: 2013-6-13 21:52
回复 8# Batcher
老师:我想把程序这样放。
作者: Batcher 时间: 2013-6-13 21:54
回复 9# zhjg5961 - @echo off
- cd /d "%~dp0"
- for %%a in (Base\*) do (
- type "%%a" >> "拷贝并合并的文件\%%~na.txt"
- )
- pause
复制代码
作者: zhjg5961 时间: 2013-6-13 22:03
回复 10# Batcher
拷贝的有问题?
作者: Batcher 时间: 2013-6-13 22:05
回复 11# zhjg5961
检查一下你的.001、.002等文件是不是ANSI编码。
作者: Batcher 时间: 2013-6-13 22:10
回复 13# zhjg5961
看这个没用。用记事本打开一个文件,左上角菜单里“文件”,“另存为”,可以看到是不是ANSI编码。
作者: Batcher 时间: 2013-6-13 22:13
如果你确定所有的文件都是ANSI编码:- @echo off
- cd /d "%~dp0"
- for %%a in (Base\*) do (
- type "%%a" >> "拷贝并合并的文件\%%~na.txt"
- echo,>>"拷贝并合并的文件\%%~na.txt"
- )
- pause
复制代码
作者: Batcher 时间: 2013-6-13 22:14
回复 15# zhjg5961
我是让你打开处理之前的.001、.002等文件,12楼说的不够清楚吗?
作者: Batcher 时间: 2013-6-13 22:33
回复 19# zhjg5961
请把所有的原始文件(不是处理之后的txt文件)压缩一下传到网盘里面,我会下载下来自己看看。
作者: zhjg5961 时间: 2013-6-13 22:34
回复 20# Batcher
我没有传过网盘,不知道怎么传的。
作者: Batcher 时间: 2013-6-13 22:43
回复 21# zhjg5961
OK,那就等你学会之后我们继续研究这个问题吧。
作者: CrLf 时间: 2013-6-13 22:53
回复 21# zhjg5961
百度网盘,很好用的,不是打广告
作者: xxpinqz 时间: 2013-6-14 07:18
~~~
LZ,打开记事本,随便拖一个base目录下的文件到记事本内,点击另存为,就看到编码了
作者: batman 时间: 2013-6-14 08:06
论坛又出现了一位热心人,赞楼上一个。。。
作者: Batcher 时间: 2013-6-16 21:31
回复 27# zhjg5961
你这些文件是纯文本文件吗?或者是你压缩的时候出了问题?我下载了2、3、11,发现打开之后都是乱码。
作者: zhjg5961 时间: 2013-6-16 21:50
回复 26# Batcher
请老师把文件1到文件13下载后解压到一个文件夹中,单击文件13即可以自动合并文件了。
作者: Batcher 时间: 2013-6-16 22:40
回复 29# zhjg5961
少了11不行吧。你把文件压缩成一个rar,上传到百度网盘。
作者: zhjg5961 时间: 2013-6-16 23:30 标题: 合并文件
老师:能不能把“Base文件夹”下面的同名字的文件(后缀名不一样)合并成一个.TXT文件放到一个文件夹中?
作者: zhjg5961 时间: 2013-6-16 23:43
本帖最后由 zhjg5961 于 2013-6-17 00:08 编辑
回复 1# zhjg5961
模拟文件地址:
http://pan.baidu.com/share/link?shareid=1415468290&uk=2485578287
密码:6jx8
作者: xxpinqz 时间: 2013-6-16 23:54
你在原帖里头跟就好了,再开新帖,别人看不懂你说什么。
而且,提取码也没写出来,叫人怎么下~
作者: zhjg5961 时间: 2013-6-17 00:40
回复 28# Batcher
http://pan.baidu.com/share/link?shareid=1415468290&uk=2485578287
密码:6jx8
作者: Batcher 时间: 2013-6-17 00:45
回复 32# zhjg5961
请你亲自打开600220.f10看看
作者: zhjg5961 时间: 2013-6-17 01:01
回复 33# Batcher
老师: 能不能编写出来后缀名按下面顺序排列合并的:002——010——005——001——014
作者: Batcher 时间: 2013-6-17 08:39
回复 34# zhjg5961 - @echo off
- cd /d "%~dp0"
- for %%i in (002 010 005 001 014) do (
- for %%j in ("Base\*.%%i") do (
- type "%%j" >> "拷贝并合并的文件\%%~nj.txt"
- echo,>>"拷贝并合并的文件\%%~nj.txt"
- )
- )
- pause
复制代码
作者: xxpinqz 时间: 2013-6-17 09:32
貌似可以这样- for %%a in (002 010 005 001 014) do (
- copy "base\*.%%a" "按类合并\all%%a.txt"
- )
复制代码
f10好像是股票软件生成的2进制文件,才显示乱码。里面内容应该没必要添加。
作者: zhjg5961 时间: 2013-6-17 09:37
回复 35# Batcher
老师:为什么没有“拷贝并合并的文件”这个文件夹你编写的程序就不能用了呢?
作者: zhjg5961 时间: 2013-6-17 09:42
回复 33# Batcher
老师:为什么没有“拷贝并合并的文件”这个文件夹你编写的程序就不能用了呢?
作者: zhjg5961 时间: 2013-6-17 09:43
回复 35# Batcher
老师:为什么没有“拷贝并合并的文件”这个文件夹你编写的程序就不能用了呢?
作者: zhjg5961 时间: 2013-6-17 09:43
回复 35# Batcher
老师:为什么没有“拷贝并合并的文件”这个文件夹你编写的程序就不能用了呢?
作者: zhjg5961 时间: 2013-6-17 09:52
回复 36# xxpinqz
原来的文件名请不要改。
作者: Batcher 时间: 2013-6-17 10:44
回复 39# zhjg5961 - @echo off
- cd /d "%~dp0"
- md 拷贝并合并的文件 2>nul
- for %%i in (002 010 005 001 014) do (
- for %%j in ("Base\*.%%i") do (
- type "%%j" >> "拷贝并合并的文件\%%~nj.txt"
- echo,>>"拷贝并合并的文件\%%~nj.txt"
- )
- )
- pause
复制代码
作者: zhjg5961 时间: 2013-6-17 13:24
回复 42# Batcher
谢谢老师!
我先试试,有问题再麻烦你。
作者: Batcher 时间: 2013-6-17 13:48
回复 43# zhjg5961
不用单独发私信。直接回复我的帖子就行了,论坛程序会提醒我的。
作者: zhjg5961 时间: 2013-6-17 17:49
回复 16# Batcher
老师:
这个程序(16楼的)拷贝合并出来后,我仔细看了,不是按顺序合并的,能不能做到从小到大的顺序排序合并。
即:001——002——003——004——005——006——007——008——009——010——011——012——013——014——015——016——f10这样排序。
作者: terse 时间: 2013-6-17 18:05
本帖最后由 terse 于 2013-6-17 20:07 编辑
楼主全部合并 可不可以这样?
改为直接COPY 遍历后缀001文件 -- copy- @echo off
- rd 合并的文件 2>nul
- md 合并的文件 2>nul
- for %%i in (base\*.001) do (
- copy "Base\%%~ni.*" "合并的文件\%%~ni.txt
- )
- pause
复制代码
排序的话
感觉copy 比 TYPE 来的快些- @echo off
- set "files=合并的文件"
- set "exts=base\*.002 base\*.010 base\*.005 base\*.001 base\*.014"
- rd /s /q %files% 2>nul
- md %files% 2>nul
- for /f "delims=" %%i in ('dir /b /a-d %exts%') do (
- if exist "%files%\%%~ni.txt" (
- copy /b "%files%\%%~ni.txt"+"base\%%i" "%files%\%%~ni.txt" >nul
- ) else copy /b "base\%%i" "%files%\%%~ni.txt" >nul
- )
- pause
复制代码
作者: Batcher 时间: 2013-6-17 20:48
回复 45# zhjg5961
你把这些数字按照42楼的格式放在第四行就行了
作者: zhjg5961 时间: 2013-6-17 21:08
回复 47# Batcher
哦!
就是说按照16楼的方法是做不到的。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |