中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 电子书处理工具 上一主题 | 下一主题
pcgg5244
新手上路





积分 3
发帖 3
注册 2009-6-23
状态 离线
『楼 主』:  电子书处理工具

@echo off
Setlocal EnableDelayedExpansion
if not "%~f1"=="" (
        echo %~f1
        set file=%~f1
        goto fenli      
) else (goto kaishi)

:kaishi
cls
echo.
echo.
echo.
echo           ╭──────────────────────────╮
echo           │                电子书处理工具                                         │
echo           │         ─────────────                              │
echo           │         欢迎使用电子书处理工具,本工具可以分割            │
echo           │     合并电子书,由于电子书是分段的,分割时可能          │
echo           │     有出入,请根据需要选择大小,QQ在下面,欢迎         │
echo           │     一起讨论批处理。                                                 │  
echo           │                       ♂低调♂QQ345042613                      │
echo           │                                       2009-9-14                        │
echo           ╰──────────────────────────╯        
set selection== ""
set /p selection=           请选择操作:1分割电子书 2合并电子书
IF not "%selection%"== "" SET selection=%selection:~0,1%
if "%selection%"=="1" goto main1
if "%selection%"=="2" goto main2

:main1
cls
echo 分割文本可以直接把文本文件拖到批处理上或输入文件名
set /p file=请输入需要分割的文件名:
:fenli
for /f "delims=" %%i in ("%file%") do (
    echo %%i
    set filename=%%~nxi
    set filesize=%%~zi
    set name=%%~ni
    set mulv=%%~dpi
    set /a kbsize=%%~zi/1024
    set /a mbsize=%%~zi/1024/1024
)
cd /d %mulv%
:fenge
echo 文件名: %filename%
echo 文件大小: %filesize% 字节(大约 %kbsize% KB, %mbsize% MB)
set /p size=请输入你要分割出的每份文件的大小(单位:B):
set /a amount=%filesize%/%size%+1
set /a line=0
for /f "delims=" %%a in (%file%)do (
set /a line+=1 )
set /p choose=%filename%  可以分割成%amount%个切块,是否继续?Y/N
if not "%choose%"=="y" goto end
md %~dps0\%filename:~0,-4%
set /a linx=0
for /f "delims=" %%b in (%file%)do (set word=%%b
set /a linx+=1  
set /a num=1000&&call :count)
echo %linx%
exit
:count
set /a sca=%line%/%amount%
set /a scb=%sca%
set /a num=1000
:loop
if %linx% leq %scb% (
echo !word!>>%~dps0\%filename:~0,-4%\%filename:~0,-4%-!num:~1!.txt
)else set /a scb+=sca && set /a num+=1 && goto :loop
goto :eof

:main2
cls
echo 本程序将按顺序合并当前目录以及子目录下所有文本文件,请注意删除无关文本文件!
set /p name=请输入合并后的文件名(不需要带扩展名如XX):
for /r %%i in (.) do (
for /f "delims=" %%a in (' dir /b "%%i\*.txt" 2^>nul ') do (
type "%%i\%%a" >>%name%.txt
echo.  >>%name%.txt
)
)
exit

2009-9-15 08:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: