本帖最后由 hlzj88 于 2018-3-7 07:16 编辑
当我们有单一项目大量文件需要处理时,一次处理耗时太长,不可等待,分次处理,又太占用人工,操心不断,且不易做好衔接,容易出错。
因此写了这个批处理,用来作为调度。可自动按设定把大任务分解为小任务,自动调用工具进行处理。无需操心,衔接良好。- @echo off&&setlocal enabledelayedexpansion
- title 分批处理调度工具
- del /q 退出.ini>nul 2>nul
- del /q 关机.ini>nul 2>nul
- echo 适用环境 你有自己的处理bat。有大量文件要处理,一次处理耗时太长,分批处理太操心。
- echo.
- echo 设定使用环境
- echo 1 原始文件夹 文件本来的位置,如要保留,请备份原始文件夹
- echo 2 工作文件夹 用于进行处理的位置
- echo 3 结果文件夹 用于保存处理后文件的位置
- echo.
- echo 工作流程 本工具放在工作文件夹内循环运行
- echo 1 从原始文件夹移动指定类型数量的文件到工作文件夹
- echo 2 启动工作文件夹内处理工具进行处理 (你的工具退出前要建立结束标志文件,处理的源文件必须移动到 原始文档可留可删)
- echo 3 依据结束标志,把文件移动到结果文件夹保存
- echo 4 重复流程。
- echo.
- echo ★配置.ini是整个流程运行的基础设置,可根据实际情况对其中内容进行设置。其中 ● 需保留。如有现成的可直接替换使用。
- echo.
- if not exist 配置.ini (echo 原始文件夹的全路径●工作文件夹的全路径●结果文件夹的全路径●需处理文件的类型例HTML●处理后的文件类型例TXT●一次处理多少文件●你的处理工具●你的处理工具处理完毕的结束标志>配置.ini) else (echo.)
- 配置.ini
- copy /y 配置.ini "%usreprofile%\Desktop\"
- for /f "tokens=1,2,3,4,5,6,7,8 delims=●" %%i in (配置.ini) do (
- set ccwjj=%%i
- set gzwjj=%%j
- set jgwjj=%%k
- set lb1=%%l
- set lb2=%%m
- set sl=%%n
- set gj=%%o
- set bz=%%p
- )
- cls
- echo 你准备把%ccwjj%内的每%sl%个%lb1%移动到%gzwjj%内用%gj%进行处理
- echo 结束标志是%bz%。并把结果%lb2%文件移动到%jgwjj%内保存。
- echo.
- echo.
- echo 如果正确,按任意键继续。如果不正确,关闭本窗口后重新来做。
- pause>nul
-
- cd /d %gzwjj%
- md 原始文档可留可删>nul 2>nul
-
- :wj
- if not exist %gj% (echo 缺少%gj%,请直接补充&&ping /n 3 127.1>nul&&goto wj) else (goto xh)
- goto wj
-
- :xh
- color 4e
- cd /d %gzwjj%
- move /y "*.%lb2%" "%jgwjj%">nul 2>nul
- del /q "原始文档可留可删\*.*">nul 2>nul
- if not exist 关机.ini (echo.) else (shutdown -s -t 70&&exit)
- if not exist 退出.ini (cd /d %ccwjj%) else (exit)
-
- set js=
- for /f %%i in ('dir /b/on *.%lb1%') do (
- set /a js+=1
- if !js! equ %sl% (cd /d %gzwjj%&&start "" %gj%&&goto ks) else (move /y %%i %gzwjj%\>nul 2>nul)
- )
-
-
-
- :ks
- cls
- title 分批处理调度工具
- color 1e
- echo.
- cd /d %gzwjj%
- echo 循环拷贝%sl%个文件用于处理
- echo 配置.ini已拷贝到桌面,下次可继续使用。
- echo.
- echo 假设处理前后的文件都是%lb1%,本工具要正确区分并删除源%lb1%而不伤害新产生的%lb1%文件,就是判别是否在 原始文档可留可删 下。重要
- echo.
- echo 在 %gzwjj% 内建立 退出.ini 即可在本次处理结束后自动退出。
- echo 在 %gzwjj% 内建立 关机.ini 即可在本次处理结束后自动关机。
- ping /n 13 127.1
- if exist %bz% (del /q %bz%&&goto xh) else (goto ks)
复制代码
|