如题:如何遍历文件夹,并且将遍历结果按顺序合并文件?
偶是个网文爱好者,经常将一些小说什么的下载,然后合并处理,最后放在电纸书或者手机上阅读,现就文本合并问题提以下要求,请达人帮助解决:
================================
1、下载的文件有各种格式,有php txt htm asp等,按各自小说名下载至小说名的文件夹下。如:《星际浪子》、《寻秦记》等,通通默认在“E:\黄易\”这个总文件夹内。要求:下载完后,遍历“黄易”这个文件夹,将所有不同扩展名的文件,全部更改为.txt为扩展名的文本文件;
这个可用如下批处理解决:
for /r %%i in (.) do (
ren *.* *.txt)
exit
================================
2、遍历“黄易”总文件夹,将所有文本文件合并,合并要求:
按1.txt,2.txt,3.txt,4.txt……10.txt,11.txt……20.txt……100.txt……如此顺序。(一般简单的bat合并顺序是1.txt,10.txt,2.txt,20.txt的顺序,这不符合要求);
排序代码(是借鉴youxi01大大的):
@echo off
setlocal enabledelayedexpansion
if "%2"=="" (
for /f "tokens=2 delims=#" %%i in ('"%~0" %1 OK^|sort') do echo %%i
) else (
for /f %%i in (%1) do (
call :CheckNum %%i Res
echo !Res!#%%i)
goto :eof)
pause>nul
:CheckNum num Res
set/a Res=0
for /l %%i in (0 1 1000) do (
set "var=%~1"
set tmp=!var:~%%i,1!
if "!tmp!"=="" goto :eof
set/a Res+=1
)
================================
3、将合并成的文件,自动命名为文件夹名称,如:《星际浪子》文件夹的的文本文件合并后,自动命名为:《星际浪子》.txt,并且自动move到“黄易”这个总文件夹根目录下。
提供一下自动命名(假设合并后的文本文件为a.txt)并转移代码:
for /r %%i in (.) do (
cd.>"%%i\%%~ni.txt"
copy a.txt "%%i\%%~ni.txt"
del a.txt
move "%%i\%%~ni.txt" E:\黄易\
)
exit
================================
以上需求要在一个批处理中(cmd环境下)解决,请各位版主、钻石、铂金、高人予以帮助!
[
Last edited by HAT on 2009-1-16 at 01:04 ]