Board logo

标题: [文件操作] [已解决]利用批处理整理漫画图片,并生成pdf [打印本页]

作者: autoav    时间: 2021-12-20 18:51     标题: [已解决]利用批处理整理漫画图片,并生成pdf

本帖最后由 autoav 于 2021-12-21 13:39 编辑

F盘下面,比如有A、B、C三个漫画文件夹,每个文件夹下面有01,02,03...12对应月份文件夹,每个月份有01,02,03三个子文件夹,每个子文件夹里面有001.jpg,002.jpg,003.jpg漫画文件。
我最终的目的,是将A、B、C三个漫画文件夹里,只有01,02,03...12总共12个pdf文件。
第一步:把所有子文件夹删掉,以【子文件夹-文件名】的方式存放到月份文件夹中,我写了一个批处理命令,可以将子文件夹名加上文件名作为新的文件名,移动到本文件夹,这个bat文件放到月份文件夹执行是可以的,但是要如何嵌套呢?我想把bat文件放到F盘执行,使之覆盖所有文件。
        for /d %%a in (*) do (
                    for %%i in (%%a\*.*) do (
                        move "%%i" "%%a-%%~nxi"
                            )
                    rd %%a
        )
作者: Batcher    时间: 2021-12-20 23:07

回复 1# autoav
  1. @echo off
  2. cd /d "F:\"
  3. for %%i in (A B C) do (
  4.     pushd "%%i"
  5.     for /d %%j in (*) do (
  6.         pushd "%%j"
  7.         for /d %%a in (*) do (
  8.             for %%i in (%%a\*.*) do (
  9.                 move "%%i" "%%a-%%~nxi"
  10.             )
  11.             rd "%%a"
  12.         )
  13.         popd
  14.     )
  15.     popd
  16. )
复制代码

作者: qixiaobin0715    时间: 2021-12-21 09:21

本帖最后由 qixiaobin0715 于 2021-12-21 09:54 编辑

没说清楚,疑问:
pdf文件是在哪个或哪些文件夹中,要移动到哪里?
作者: qixiaobin0715    时间: 2021-12-21 11:13

本帖最后由 qixiaobin0715 于 2021-12-21 12:20 编辑

如果只处理jpg文件的话,这样也可以:
  1. @echo off
  2. for /f "delims=" %%a in ('dir /s /b /ad A B C') do (
  3.     if exist "%%a\*.jpg" (
  4.         pushd "%%a"
  5.         for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  6.             move "%%i" "%%~dpi..\%%~na-%%i"
  7.         )
  8.         popd
  9.         rd "%%a"
  10.     )
  11. )
  12. pause
复制代码
代码未测试
作者: autoav    时间: 2021-12-21 12:29

没说清楚,疑问:
pdf文件是在哪个或哪些文件夹中,要移动到哪里?
qixiaobin0715 发表于 2021-12-21 09:21



我就是先要把jpg文件整理好,最后再生成pdf文件,这一步已经没问题,主要还是整理jpg的问题
作者: autoav    时间: 2021-12-21 13:35

最后的代码如下,使用软件FreePic2Pdf,可以将文件夹内的所有图像文件生成一个pdf文件,并以该文件夹命名
1、先去掉月份文件夹里存在的上中下,改为1,2,3。
2、将存在1,2,3这一级目录的删除,并在对应的文件名前加上123,使之按照顺序排列。
3、使用FreePic2Pdf,生成对应月份的pdf文件

@echo off
rem 将最后一级子目录存在的上中下替换为123
for /f "delims=" %%a in ('dir /b /s /ad ') do (
if exist "%%a\上\" ren "%%a\上\" "1"
if exist "%%a\中\" ren "%%a\中\" "2"
if exist "%%a\下\" ren "%%a\下\" "3"
)
rem 将有多级存在的子目录往前移一层
for /d %%i in (*) do (
        pushd "%%i"
        for /d %%j in (*) do (
                if not exist "%%j\*.jpg" (
                        pushd "%%j"
                        for /d %%a in (*) do (
                                    for %%i in (%%a\*.*) do (
                                        move "%%i" "%%a%%~nxi"
                            )
                            rd "%%a"
                        )
                        popd
                )
        )
        popd
)
作者: autoav    时间: 2021-12-21 13:36

回复 4# qixiaobin0715


    代码测试可用,谢谢!
作者: autoav    时间: 2021-12-21 13:36

回复 2# Batcher


    代码测试可用,我按照自己的需求,改了部分代码,谢谢!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2