![Board logo](images/default/logo.gif)
标题: [文件操作] 批处理怎样根据输入的起始文件名解压缩文件? [打印本页]
作者: netbluesky 时间: 2020-2-6 17:37 标题: 批处理怎样根据输入的起始文件名解压缩文件?
假设目录下众多rar文件,文件名规律如下表,想要实现功能,输入起始文件名值:如20190801 输入终止文件名值:如20191120 解压指定范围的rar文件到指定目录内 (解压20190801_L2D.rar ------20191120_L2D.rar范围内的文件)
(@echo off & title 批量解压并分类文件
cd /d %~dp0
set WinRarDir=%ProgramFiles%\WinRAR
set Path=%Path%;%WinRarDir%
unrar e -OR *.rar F:\导出
pause
goto :eof)
能力有限只能解压目录下所有rar文件到指定目录
20190729_L2D.rar
20190730_L2D.rar
20190731_L2D.rar
20190801_L2D.rar
20190802_L2D.rar
20190806_L2D.rar
20190807_L2D.rar
20190808_L2D.rar
20190809_L2D.rar
20190812_L2D.rar
20190813_L2D.rar
20190814_L2D.rar
20190815_L2D.rar
20190816_L2D.rar
20190819_L2D.rar
20190820_L2D.rar
20190821_L2D.rar
20190822_L2D.rar
20190823_L2D.rar
20190826_L2D.rar
20190827_L2D.rar
20190828_L2D.rar
20190829_L2D.rar
20190830_L2D.rar
20190902_L2D.rar
20190903_L2D.rar
20190904_L2D.rar
20190905_L2D.rar
20190906_L2D.rar
20190909_L2D.rar
20190910_L2D.rar
20190911_L2D.rar
20190912_L2D.rar
20190916_L2D.rar
20190917_L2D.rar
20190918_L2D.rar
20190919_L2D.rar
20190920_L2D.rar
20190923_L2D.rar
20190924_L2D.rar
20190925_L2D.rar
20190926_L2D.rar
20190927_L2D.rar
20190930_L2D.rar
20191008_L2D.rar
20191009_L2D.rar
20191010_L2D.rar
20191011_L2D.rar
20191014_L2D.rar
20191015_L2D.rar
20191016_L2D.rar
20191017_L2D.rar
20191018_L2D.rar
20191021_L2D.rar
20191022_L2D.rar
20191023_L2D.rar
20191024_L2D.rar
20191025_L2D.rar
20191028_L2D.rar
20191029_L2D.rar
20191030_L2D.rar
20191031_L2D.rar
20191101_L2D.rar
20191104_L2D.rar
20191105_L2D.rar
20191106_L2D.rar
20191107_L2D.rar
20191108_L2D.rar
20191111_L2D.rar
20191112_L2D.rar
20191113_L2D.rar
20191114_L2D.rar
20191115_L2D.rar
20191118_L2D.rar
20191119_L2D.rar
20191120_L2D.rar
20191121_L2D.rar
20191122_L2D.rar
20191125_L2D.rar
20191126_L2D.rar
20191127_L2D.rar
20191128_L2D.rar
20191129_L2D.rar
20191202_L2D.rar
20191203_L2D.rar
20191204_L2D.rar
20191205_L2D.rar
作者: Gin_Q 时间: 2020-2-6 18:03
我发了一个计算日期的帖子,你去参考一下吧!
作者: netbluesky 时间: 2020-2-6 18:13
我发了一个计算日期的帖子,你去参考一下吧!
Gin_Q 发表于 2020-2-6 18:03 ![](http://www.bathome.net/images/common/back.gif)
看不明白
:lol
作者: hlzj88 时间: 2020-2-6 21:56
使用for /l参数来解决。下面是原理,需结合你的代码
set /p ksz=输入开始值---》
set /p jsz=输入结束值---》
for /l %%i in (%ksz%,1,%jsz%) do unrar e -OR %%i_L2D.rar F:\导出
作者: Batcher 时间: 2020-2-7 10:00
回复 4# hlzj88
排除一下不存在的日期吧
作者: Gin_Q 时间: 2020-2-7 12:51
这个是计算日期的,其他的你自己摸索一下吧!- @echo off & setlocal enabledelayedexpansion &rem by author Gan
-
- set /p "time_end=请输入停止日期(格式:2020/01/01):"
- set /p "time_go=请输入起始日期(格式:20200101):"
- del /q old_date.txt 1>nul 2>nul
-
- >old_date.txt (for /l %%a in (1,1,999) do (
- set /a nd=%%a
- call :runnian %time_end:~0,4%
- call :test
- if !m! lss 10 set m=0!m!
- if !d! lss 10 set d=0!d!
- echo !y!!m!!d!
- if !y!!m!!d! equ %time_go% goto :pa
- ))
- :pa
- pause & eixt
- ::exit /b 0
- :test
- for /f "tokens=1-3 delims=/ " %%a in ("%time_end%") do (set /a y=%%a, m=1%%b%%100, d=1%%c%%100)
- if !nd! lss %d% (set /a d-=nd & goto :eof)
- set /a d_m=m-1, exd=0
- for /l %%a in (1,1,!d_m!) do (set /a exd+=m%%a)
- set /a exd+=d
- if !nd! GEQ %exd% (set /a nd-=exd, m=12, y-=1
- call :runnian !y! ) else (set /a nd-=d, m-=1)
- :loop
-
- if !nd! GTR !count! (set /a nd-=!count!, m=12, y-=1& call :runnian !y!& goto :loop)
- for /l %%a in (1,1,2) do (
- if !m! LEQ 0 (set /a m=12, y-=1 & call :runnian !y!)
- set /a md = m!m!
- if !nd! lss !md! (set /a d=md-nd & goto :eof)
- set /a nd-=md, m-=1
- goto :loop)
-
- :runnian
- set /a m1=31, m2=28, m3=31, m4=30, m5=31, m6=30, m7=31, m8=31, m9=30, m10=31, m11=30, m12=31
- set /a n=0
- set /a a=%1%%4,a1=%1%%100,a2=%1%%400
- if !a! equ 0 set n=1& if !a1! equ 0 set n=0
- if !a2! equ 0 set n=1
- if !n! equ 1 (set /a m2=29, count=366) else (set /a m2=28, count=365)
- goto :eof
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |