Sorting 将文件排序到子文件夹(除非单个),如何解决巨大的效率问题?

Sorting 将文件排序到子文件夹(除非单个),如何解决巨大的效率问题?,sorting,batch-file,batch-processing,Sorting,Batch File,Batch Processing,我有一个脚本,它将文件排序到名为series的文件夹树中,该文件夹树由包含文件的简单“series NAME”子目录填充。如果只有一个文件被放入一个文件夹,它将被还原,或者我喜欢称之为“unnested”。它还包含一个特殊文件夹PILOT scents,大多数孤儿都会去那里(其他孤儿可以留在那里)。代码如下: :: precautions @cd /d d:\videos\series @if /i not "%cd%"=="d:\videos\series" echo invalid seri

我有一个脚本,它将文件排序到名为
series
的文件夹树中,该文件夹树由包含文件的简单“series NAME”子目录填充。如果只有一个文件被放入一个文件夹,它将被还原,或者我喜欢称之为“unnested”。它还包含一个特殊文件夹
PILOT scents
,大多数孤儿都会去那里(其他孤儿可以留在那里)。代码如下:

:: precautions
@cd /d d:\videos\series
@if /i not "%cd%"=="d:\videos\series" echo invalid series dir. && exit /b
@if not exist "pilot episodes" echo pilot episodes dir missing. && exit /b
@if not exist "d:\other\scripts\lootname.cmd" echo lootname missing. && exit /b

:: re-sort pilots every now and then
@if "%time:7,4%"=="7,77" move "pilot episodes\*01?01*" . >nul && echo pilot episodes unnested

:: sort by name into dedicated folders
@for %%g in (*.mp4 *.mkv *.m4v *.avi *.flv *.mpg *.mpeg *.mpe *.wmv *.mov *.ts *.m2ts *.vob *.3gp *.rm) do @call :nest "%%g"

:: revert folders with single episode
@for /f "delims=" %%g in ('dir /s /b /ad') do @dir "%%g" | findstr /c:" 1 File" >nul && @move "%%g\*" . >nul
@for /f "delims=" %%d in ('dir /s /b /ad ^| sort /r') do @rd "%%d" 2>nul

:: single pilots to dedicated folder
@if exist "pilot episodes" for %%g in (*01e01* *01e00* *01x01*) do @move "%%g" "pilot episodes"
@exit /b

:nest
:: this call extrapolates show name from filename
@call d:\other\scripts\lootname.cmd %1 data
@if not exist "%name%" mkdir "%name%"
@move %1 "%name%"
@if exist %1 echo moving "%~n1" to "%name%" failed. maybe a duplicate exists or file is being used?"
最大的问题是,这是一个繁重的过程,特别是当我有时不得不将所有飞行员移回系列根目录进行重新排序时(以防一个节目出现更多的剧集)。它必须嵌套每一个,然后恢复每一个,并将它们移回飞行员,只是为了看看是否有任何新的“配对”完成。我想知道是否有一种方法可以跳过所有这些不必要的工作,并且保持相对简单

编辑:

这是脚本中引用的
lootname.cmd
文件。它不仅仅是为序列排序外推名称。它还检测用于对
filebot
重命名应用进一步限制的年份、季节和情节(在真正重命名之前进行假重命名并与原始版本进行比较)。我可能有点偏执,但我不太相信filebot。作为一项辅助功能,如果文件位于名为
extras
featurettes
的文件夹中,它还会重命名文件以包含
making of
。无论如何,使用
数据
循环,它绕过了除外推之外的所有内容,外推是上面我的系列分拣机使用的唯一内容

if "%~2"=="data" call :data "%~n1" data & exit /b
cd /d "%~dp1"
if not "%cd%\"=="%~dp1" echo dir %~dp1 not found && exit /b

:: detect extras (from path) and rename to include movie name from parent folder
:: bug: this puts double "making of " to beginning of the first file for some reason.
echo %1 | find /i "extras" >nul && call :data %2
echo %1 | find /i "featurettes" >nul && call :data %2
echo %1 | find /i "extras" >nul && ren %1 "Making of %name% - %~nx1" && exit /b
echo %1 | find /i "featurettes" >nul && ren %1 "Making of %name% - %~nx1" && exit /b

:: regular job start (show and film only)
call :data "%~n1"
if "%type%"=="misc" echo unable to rename without tags "%~n1" && exit /b

:: prep fake temp file
set tempdir=%temp%\%date:~3,2%%date:~6,2%%date:~11,2%%time:~1,1%%time:~3,2%%time:~6,2%%time:~9,2%
md "%tempdir%" && copy /y nul "%tempdir%\%~nx1" >nul

:: variables (to shorten lines)
set fb=c:\progra~1\filebot\filebot
if "%type%"=="film" set cf=--db TheMovieDb --format "{n} ({y}) {director} {genres} r{rating} {vf} {vc} {ac} {imdbid}"
if "%type%"=="show" set cf=--db TheTVDb --format "{n} {s00e00} {t} {vf} {vc} {ac} {imdbid}"

:: rename fake temp file
%fb% -rename "%tempdir%\%~nx1" --q "%name% %year%" %cf% >nul 2>nul
for /r "%tempdir%" %%i in (*) do set "new=%%~ni"
if "%~n1"=="%new%" echo rename manually "%~n1" && exit /b

:: if as expected rename for real
if "%type%"=="film" echo %%new:^&=^^^&%% | findstr /i /b /c:"%name% (%year%)" >nul && goto 4real
if "%type%"=="show" if not "%year%"=="" echo %%new:^&=^^^&%% | findstr /i /b /c:"%name% (%year%) %ss%%ep%" >nul && goto 4real
if "%type%"=="show" if "%year%"=="" echo %%new:^&=^^^&%% | findstr /i /b /c:"%name% %ss%%ep%" >nul && goto 4real
echo rename "%~n1" failed && exit /b
exit /b

:4real
%fb% -rename %1 --q "%name% %year%" %cf% >nul 2>nul
if not exist %1 echo successfully renamed "%~n1"
exit /b

:data
set ss=
set ep=
set year=
set type=misc
set name=%~1

:: sanitize
set name=%name:.= %
set name=%name:_= %
set name=%name: - = %
set name=%name: - Copy.=.%
set name=%name: (original)=%
set name=%name:(1)=%
set name=%name:(2)=%
set name=%name:[1]=%
set name=%name:[2]=%
set name=%name:(=%
set name=%name:)=%
set name=%name:[=%
set name=%name:]=%
set name=%name:pbs =%
set name=%name:bbc =%
set name=%name: the series=%
set name=%name:  = %

:: episode tags as variables + cut
set name=%name:e199=& set ep=E199& set type=show& rem %
set name=%name:e198=& set ep=E198& set type=show& rem %
set name=%name:e197=& set ep=E197& set type=show& rem %
set name=%name:e196=& set ep=E196& set type=show& rem %
set name=%name:e195=& set ep=E195& set type=show& rem %
set name=%name:e194=& set ep=E194& set type=show& rem %
set name=%name:e193=& set ep=E193& set type=show& rem %
set name=%name:e192=& set ep=E192& set type=show& rem %
set name=%name:e191=& set ep=E191& set type=show& rem %
set name=%name:e190=& set ep=E190& set type=show& rem %
set name=%name:e189=& set ep=E189& set type=show& rem %
set name=%name:e188=& set ep=E188& set type=show& rem %
set name=%name:e187=& set ep=E187& set type=show& rem %
set name=%name:e186=& set ep=E186& set type=show& rem %
set name=%name:e185=& set ep=E185& set type=show& rem %
set name=%name:e184=& set ep=E184& set type=show& rem %
set name=%name:e183=& set ep=E183& set type=show& rem %
set name=%name:e182=& set ep=E182& set type=show& rem %
set name=%name:e181=& set ep=E181& set type=show& rem %
set name=%name:e180=& set ep=E180& set type=show& rem %
set name=%name:e179=& set ep=E179& set type=show& rem %
set name=%name:e178=& set ep=E178& set type=show& rem %
set name=%name:e177=& set ep=E177& set type=show& rem %
set name=%name:e176=& set ep=E176& set type=show& rem %
set name=%name:e175=& set ep=E175& set type=show& rem %
set name=%name:e174=& set ep=E174& set type=show& rem %
set name=%name:e173=& set ep=E173& set type=show& rem %
set name=%name:e172=& set ep=E172& set type=show& rem %
set name=%name:e171=& set ep=E171& set type=show& rem %
set name=%name:e170=& set ep=E170& set type=show& rem %
set name=%name:e169=& set ep=E169& set type=show& rem %
set name=%name:e168=& set ep=E168& set type=show& rem %
set name=%name:e167=& set ep=E167& set type=show& rem %
set name=%name:e166=& set ep=E166& set type=show& rem %
set name=%name:e165=& set ep=E165& set type=show& rem %
set name=%name:e164=& set ep=E164& set type=show& rem %
set name=%name:e163=& set ep=E163& set type=show& rem %
set name=%name:e162=& set ep=E162& set type=show& rem %
set name=%name:e161=& set ep=E161& set type=show& rem %
set name=%name:e160=& set ep=E160& set type=show& rem %
set name=%name:e159=& set ep=E159& set type=show& rem %
set name=%name:e158=& set ep=E158& set type=show& rem %
set name=%name:e157=& set ep=E157& set type=show& rem %
set name=%name:e156=& set ep=E156& set type=show& rem %
set name=%name:e155=& set ep=E155& set type=show& rem %
set name=%name:e154=& set ep=E154& set type=show& rem %
set name=%name:e153=& set ep=E153& set type=show& rem %
set name=%name:e152=& set ep=E152& set type=show& rem %
set name=%name:e151=& set ep=E151& set type=show& rem %
set name=%name:e150=& set ep=E150& set type=show& rem %
set name=%name:e149=& set ep=E149& set type=show& rem %
set name=%name:e148=& set ep=E148& set type=show& rem %
set name=%name:e147=& set ep=E147& set type=show& rem %
set name=%name:e146=& set ep=E146& set type=show& rem %
set name=%name:e145=& set ep=E145& set type=show& rem %
set name=%name:e144=& set ep=E144& set type=show& rem %
set name=%name:e143=& set ep=E143& set type=show& rem %
set name=%name:e142=& set ep=E142& set type=show& rem %
set name=%name:e141=& set ep=E141& set type=show& rem %
set name=%name:e140=& set ep=E140& set type=show& rem %
set name=%name:e139=& set ep=E139& set type=show& rem %
set name=%name:e138=& set ep=E138& set type=show& rem %
set name=%name:e137=& set ep=E137& set type=show& rem %
set name=%name:e136=& set ep=E136& set type=show& rem %
set name=%name:e135=& set ep=E135& set type=show& rem %
set name=%name:e134=& set ep=E134& set type=show& rem %
set name=%name:e133=& set ep=E133& set type=show& rem %
set name=%name:e132=& set ep=E132& set type=show& rem %
set name=%name:e131=& set ep=E131& set type=show& rem %
set name=%name:e130=& set ep=E130& set type=show& rem %
set name=%name:e129=& set ep=E129& set type=show& rem %
set name=%name:e128=& set ep=E128& set type=show& rem %
set name=%name:e127=& set ep=E127& set type=show& rem %
set name=%name:e126=& set ep=E126& set type=show& rem %
set name=%name:e125=& set ep=E125& set type=show& rem %
set name=%name:e124=& set ep=E124& set type=show& rem %
set name=%name:e123=& set ep=E123& set type=show& rem %
set name=%name:e122=& set ep=E122& set type=show& rem %
set name=%name:e121=& set ep=E121& set type=show& rem %
set name=%name:e120=& set ep=E120& set type=show& rem %
set name=%name:e119=& set ep=E119& set type=show& rem %
set name=%name:e118=& set ep=E118& set type=show& rem %
set name=%name:e117=& set ep=E117& set type=show& rem %
set name=%name:e116=& set ep=E116& set type=show& rem %
set name=%name:e115=& set ep=E115& set type=show& rem %
set name=%name:e114=& set ep=E114& set type=show& rem %
set name=%name:e113=& set ep=E113& set type=show& rem %
set name=%name:e112=& set ep=E112& set type=show& rem %
set name=%name:e111=& set ep=E111& set type=show& rem %
set name=%name:e110=& set ep=E110& set type=show& rem %
set name=%name:e109=& set ep=E109& set type=show& rem %
set name=%name:e108=& set ep=E108& set type=show& rem %
set name=%name:e107=& set ep=E107& set type=show& rem %
set name=%name:e106=& set ep=E106& set type=show& rem %
set name=%name:e105=& set ep=E105& set type=show& rem %
set name=%name:e104=& set ep=E104& set type=show& rem %
set name=%name:e103=& set ep=E103& set type=show& rem %
set name=%name:e102=& set ep=E102& set type=show& rem %
set name=%name:e101=& set ep=E101& set type=show& rem %
set name=%name:e100=& set ep=E100& set type=show& rem %
set name=%name:e99=& set ep=E99& set type=show& rem %
set name=%name:e98=& set ep=E98& set type=show& rem %
set name=%name:e97=& set ep=E97& set type=show& rem %
set name=%name:e96=& set ep=E96& set type=show& rem %
set name=%name:e95=& set ep=E95& set type=show& rem %
set name=%name:e94=& set ep=E94& set type=show& rem %
set name=%name:e93=& set ep=E93& set type=show& rem %
set name=%name:e92=& set ep=E92& set type=show& rem %
set name=%name:e91=& set ep=E91& set type=show& rem %
set name=%name:e90=& set ep=E90& set type=show& rem %
set name=%name:e89=& set ep=E89& set type=show& rem %
set name=%name:e88=& set ep=E88& set type=show& rem %
set name=%name:e87=& set ep=E87& set type=show& rem %
set name=%name:e86=& set ep=E86& set type=show& rem %
set name=%name:e85=& set ep=E85& set type=show& rem %
set name=%name:e84=& set ep=E84& set type=show& rem %
set name=%name:e83=& set ep=E83& set type=show& rem %
set name=%name:e82=& set ep=E82& set type=show& rem %
set name=%name:e81=& set ep=E81& set type=show& rem %
set name=%name:e80=& set ep=E80& set type=show& rem %
set name=%name:e79=& set ep=E79& set type=show& rem %
set name=%name:e78=& set ep=E78& set type=show& rem %
set name=%name:e77=& set ep=E77& set type=show& rem %
set name=%name:e76=& set ep=E76& set type=show& rem %
set name=%name:e75=& set ep=E75& set type=show& rem %
set name=%name:e74=& set ep=E74& set type=show& rem %
set name=%name:e73=& set ep=E73& set type=show& rem %
set name=%name:e72=& set ep=E72& set type=show& rem %
set name=%name:e71=& set ep=E71& set type=show& rem %
set name=%name:e70=& set ep=E70& set type=show& rem %
set name=%name:e69=& set ep=E69& set type=show& rem %
set name=%name:e68=& set ep=E68& set type=show& rem %
set name=%name:e67=& set ep=E67& set type=show& rem %
set name=%name:e66=& set ep=E66& set type=show& rem %
set name=%name:e65=& set ep=E65& set type=show& rem %
set name=%name:e64=& set ep=E64& set type=show& rem %
set name=%name:e63=& set ep=E63& set type=show& rem %
set name=%name:e62=& set ep=E62& set type=show& rem %
set name=%name:e61=& set ep=E61& set type=show& rem %
set name=%name:e60=& set ep=E60& set type=show& rem %
set name=%name:e59=& set ep=E59& set type=show& rem %
set name=%name:e58=& set ep=E58& set type=show& rem %
set name=%name:e57=& set ep=E57& set type=show& rem %
set name=%name:e56=& set ep=E56& set type=show& rem %
set name=%name:e55=& set ep=E55& set type=show& rem %
set name=%name:e54=& set ep=E54& set type=show& rem %
set name=%name:e53=& set ep=E53& set type=show& rem %
set name=%name:e52=& set ep=E52& set type=show& rem %
set name=%name:e51=& set ep=E51& set type=show& rem %
set name=%name:e50=& set ep=E50& set type=show& rem %
set name=%name:e49=& set ep=E49& set type=show& rem %
set name=%name:e48=& set ep=E48& set type=show& rem %
set name=%name:e47=& set ep=E47& set type=show& rem %
set name=%name:e46=& set ep=E46& set type=show& rem %
set name=%name:e45=& set ep=E45& set type=show& rem %
set name=%name:e44=& set ep=E44& set type=show& rem %
set name=%name:e43=& set ep=E43& set type=show& rem %
set name=%name:e42=& set ep=E42& set type=show& rem %
set name=%name:e41=& set ep=E41& set type=show& rem %
set name=%name:e40=& set ep=E40& set type=show& rem %
set name=%name:e39=& set ep=E39& set type=show& rem %
set name=%name:e38=& set ep=E38& set type=show& rem %
set name=%name:e37=& set ep=E37& set type=show& rem %
set name=%name:e36=& set ep=E36& set type=show& rem %
set name=%name:e35=& set ep=E35& set type=show& rem %
set name=%name:e34=& set ep=E34& set type=show& rem %
set name=%name:e33=& set ep=E33& set type=show& rem %
set name=%name:e32=& set ep=E32& set type=show& rem %
set name=%name:e31=& set ep=E31& set type=show& rem %
set name=%name:e30=& set ep=E30& set type=show& rem %
set name=%name:e29=& set ep=E29& set type=show& rem %
set name=%name:e28=& set ep=E28& set type=show& rem %
set name=%name:e27=& set ep=E27& set type=show& rem %
set name=%name:e26=& set ep=E26& set type=show& rem %
set name=%name:e25=& set ep=E25& set type=show& rem %
set name=%name:e24=& set ep=E24& set type=show& rem %
set name=%name:e23=& set ep=E23& set type=show& rem %
set name=%name:e22=& set ep=E22& set type=show& rem %
set name=%name:e21=& set ep=E21& set type=show& rem %
set name=%name:e20=& set ep=E20& set type=show& rem %
set name=%name:e19=& set ep=E19& set type=show& rem %
set name=%name:e18=& set ep=E18& set type=show& rem %
set name=%name:e17=& set ep=E17& set type=show& rem %
set name=%name:e16=& set ep=E16& set type=show& rem %
set name=%name:e15=& set ep=E15& set type=show& rem %
set name=%name:e14=& set ep=E14& set type=show& rem %
set name=%name:e13=& set ep=E13& set type=show& rem %
set name=%name:e12=& set ep=E12& set type=show& rem %
set name=%name:e11=& set ep=E11& set type=show& rem %
set name=%name:e10=& set ep=E10& set type=show& rem %
set name=%name:e09=& set ep=E09& set type=show& rem %
set name=%name:e08=& set ep=E08& set type=show& rem %
set name=%name:e07=& set ep=E07& set type=show& rem %
set name=%name:e06=& set ep=E06& set type=show& rem %
set name=%name:e05=& set ep=E05& set type=show& rem %
set name=%name:e04=& set ep=E04& set type=show& rem %
set name=%name:e03=& set ep=E03& set type=show& rem %
set name=%name:e02=& set ep=E02& set type=show& rem %
set name=%name:e01=& set ep=E01& set type=show& rem %
set name=%name:e00=& set ep=E00& set type=show& rem %

:: season tags as variables + cut
set name=%name: s00=& set ss=S00& set type=show& rem %
set name=%name: s01=& set ss=S01& set type=show& rem %
set name=%name: s02=& set ss=S02& set type=show& rem %
set name=%name: s03=& set ss=S03& set type=show& rem %
set name=%name: s04=& set ss=S04& set type=show& rem %
set name=%name: s05=& set ss=S05& set type=show& rem %
set name=%name: s06=& set ss=S06& set type=show& rem %
set name=%name: s07=& set ss=S07& set type=show& rem %
set name=%name: s08=& set ss=S08& set type=show& rem %
set name=%name: s09=& set ss=S09& set type=show& rem %
set name=%name: s10=& set ss=S10& set type=show& rem %
set name=%name: s11=& set ss=S11& set type=show& rem %
set name=%name: s12=& set ss=S12& set type=show& rem %
set name=%name: s13=& set ss=S13& set type=show& rem %
set name=%name: s14=& set ss=S14& set type=show& rem %
set name=%name: s15=& set ss=S15& set type=show& rem %
set name=%name: s16=& set ss=S16& set type=show& rem %
set name=%name: s17=& set ss=S17& set type=show& rem %
set name=%name: s18=& set ss=S18& set type=show& rem %
set name=%name: s19=& set ss=S19& set type=show& rem %
set name=%name: s20=& set ss=S20& set type=show& rem %
set name=%name: s21=& set ss=S21& set type=show& rem %
set name=%name: s22=& set ss=S22& set type=show& rem %
set name=%name: s23=& set ss=S23& set type=show& rem %
set name=%name: s24=& set ss=S24& set type=show& rem %
set name=%name: s25=& set ss=S25& set type=show& rem %
set name=%name: s26=& set ss=S26& set type=show& rem %
set name=%name: s27=& set ss=S27& set type=show& rem %
set name=%name: s28=& set ss=S28& set type=show& rem %
set name=%name: s29=& set ss=S29& set type=show& rem %
set name=%name: s30=& set ss=S30& set type=show& rem %

set name=%name:season 1 =& set ss=S01& set type=show& rem %
set name=%name:season 2 =& set ss=S02& set type=show& rem %
set name=%name:season 3 =& set ss=S03& set type=show& rem %
set name=%name:season 4 =& set ss=S04& set type=show& rem %
set name=%name:season 5 =& set ss=S05& set type=show& rem %
set name=%name:season 6 =& set ss=S06& set type=show& rem %
set name=%name:season 7 =& set ss=S07& set type=show& rem %
set name=%name:season 8 =& set ss=S08& set type=show& rem %
set name=%name:season 9 =& set ss=S09& set type=show& rem %
set name=%name:series 1 =& set ss=S01& set type=show& rem %
set name=%name:series 2 =& set ss=S02& set type=show& rem %
set name=%name:series 3 =& set ss=S03& set type=show& rem %
set name=%name:series 4 =& set ss=S04& set type=show& rem %
set name=%name:series 5 =& set ss=S05& set type=show& rem %
set name=%name:series 6 =& set ss=S06& set type=show& rem %
set name=%name:series 7 =& set ss=S07& set type=show& rem %
set name=%name:series 8 =& set ss=S08& set type=show& rem %
set name=%name:series 9 =& set ss=S09& set type=show& rem %

set name=%name:1of=& set ep=E01& set type=show& rem %
set name=%name:2of=& set ep=E02& set type=show& rem %
set name=%name:3of=& set ep=E03& set type=show& rem %
set name=%name:4of=& set ep=E04& set type=show& rem %
set name=%name:5of=& set ep=E05& set type=show& rem %
set name=%name:6of=& set ep=E06& set type=show& rem %
set name=%name:7of=& set ep=E07& set type=show& rem %
set name=%name:8of=& set ep=E08& set type=show& rem %
set name=%name:9of=& set ep=E09& set type=show& rem %

set name=%name:x01=x& set ep=E01& set type=show& rem %
set name=%name:x02=x& set ep=E02& set type=show& rem %
set name=%name:x03=x& set ep=E03& set type=show& rem %
set name=%name:x04=x& set ep=E04& set type=show& rem %
set name=%name:x05=x& set ep=E05& set type=show& rem %
set name=%name:x06=x& set ep=E06& set type=show& rem %
set name=%name:x07=x& set ep=E07& set type=show& rem %
set name=%name:x08=x& set ep=E08& set type=show& rem %
set name=%name:x09=x& set ep=E09& set type=show& rem %
set name=%name:x10=x& set ep=E10& set type=show& rem %
set name=%name:01x=& set ss=S01& set type=show& rem %
set name=%name:02x=& set ss=S02& set type=show& rem %
set name=%name:03x=& set ss=S03& set type=show& rem %
set name=%name:04x=& set ss=S04& set type=show& rem %
set name=%name:05x=& set ss=S05& set type=show& rem %
set name=%name:06x=& set ss=S06& set type=show& rem %
set name=%name:07x=& set ss=S07& set type=show& rem %
set name=%name:08x=& set ss=S08& set type=show& rem %
set name=%name:09x=& set ss=S09& set type=show& rem %

:: lastly year tags as variables + cut
set name=%name: 1963=& set year=1963& if not defined type set type=film& rem %
set name=%name: 1964=& set year=1964& if not defined type set type=film& rem %
set name=%name: 1965=& set year=1965& if not defined type set type=film& rem %
set name=%name: 1966=& set year=1966& if not defined type set type=film& rem %
set name=%name: 1967=& set year=1967& if not defined type set type=film& rem %
set name=%name: 1968=& set year=1968& if not defined type set type=film& rem %
set name=%name: 1969=& set year=1969& if not defined type set type=film& rem %
set name=%name: 1970=& set year=1970& if not defined type set type=film& rem %
set name=%name: 1971=& set year=1971& if not defined type set type=film& rem %
set name=%name: 1972=& set year=1972& if not defined type set type=film& rem %
set name=%name: 1973=& set year=1973& if not defined type set type=film& rem %
set name=%name: 1974=& set year=1974& if not defined type set type=film& rem %
set name=%name: 1975=& set year=1975& if not defined type set type=film& rem %
set name=%name: 1976=& set year=1976& if not defined type set type=film& rem %
set name=%name: 1977=& set year=1977& if not defined type set type=film& rem %
set name=%name: 1978=& set year=1978& if not defined type set type=film& rem %
set name=%name: 1979=& set year=1979& if not defined type set type=film& rem %
set name=%name: 1980=& set year=1980& if not defined type set type=film& rem %
set name=%name: 1981=& set year=1981& if not defined type set type=film& rem %
set name=%name: 1982=& set year=1982& if not defined type set type=film& rem %
set name=%name: 1983=& set year=1983& if not defined type set type=film& rem %
set name=%name: 1984=& set year=1984& if not defined type set type=film& rem %
set name=%name: 1985=& set year=1985& if not defined type set type=film& rem %
set name=%name: 1986=& set year=1986& if not defined type set type=film& rem %
set name=%name: 1987=& set year=1987& if not defined type set type=film& rem %
set name=%name: 1988=& set year=1988& if not defined type set type=film& rem %
set name=%name: 1989=& set year=1989& if not defined type set type=film& rem %
set name=%name: 1990=& set year=1990& if not defined type set type=film& rem %
set name=%name: 1991=& set year=1991& if not defined type set type=film& rem %
set name=%name: 1992=& set year=1992& if not defined type set type=film& rem %
set name=%name: 1993=& set year=1993& if not defined type set type=film& rem %
set name=%name: 1994=& set year=1994& if not defined type set type=film& rem %
set name=%name: 1995=& set year=1995& if not defined type set type=film& rem %
set name=%name: 1996=& set year=1996& if not defined type set type=film& rem %
set name=%name: 1997=& set year=1997& if not defined type set type=film& rem %
set name=%name: 1998=& set year=1998& if not defined type set type=film& rem %
set name=%name: 1999=& set year=1999& if not defined type set type=film& rem %
set name=%name: 2000=& set year=2000& if not defined type set type=film& rem %
set name=%name: 2001=& set year=2001& if not defined type set type=film& rem %
set name=%name: 2002=& set year=2002& if not defined type set type=film& rem %
set name=%name: 2003=& set year=2003& if not defined type set type=film& rem %
set name=%name: 2004=& set year=2004& if not defined type set type=film& rem %
set name=%name: 2005=& set year=2005& if not defined type set type=film& rem %
set name=%name: 2006=& set year=2006& if not defined type set type=film& rem %
set name=%name: 2007=& set year=2007& if not defined type set type=film& rem %
set name=%name: 2008=& set year=2008& if not defined type set type=film& rem %
set name=%name: 2009=& set year=2009& if not defined type set type=film& rem %
set name=%name: 2010=& set year=2010& if not defined type set type=film& rem %
set name=%name: 2011=& set year=2011& if not defined type set type=film& rem %
set name=%name: 2012=& set year=2012& if not defined type set type=film& rem %
set name=%name: 2013=& set year=2013& if not defined type set type=film& rem %
set name=%name: 2014=& set year=2014& if not defined type set type=film& rem %
set name=%name: 2015=& set year=2015& if not defined type set type=film& rem %
set name=%name: 2016=& set year=2016& if not defined type set type=film& rem %
set name=%name: 2017=& set year=2017& if not defined type set type=film& rem %
set name=%name: 2018=& set year=2018& if not defined type set type=film& rem %
set name=%name: 2019=& set year=2019& if not defined type set type=film& rem %
set name=%name: 2020=& set year=2020& if not defined type set type=film& rem %
set name=%name: 2021=& set year=2021& if not defined type set type=film& rem %
set name=%name: 2022=& set year=2022& if not defined type set type=film& rem %
set name=%name: 2023=& set year=2023& if not defined type set type=film& rem %
set name=%name: 2024=& set year=2024& if not defined type set type=film& rem %
set name=%name: 2025=& set year=2025& if not defined type set type=film& rem %
set name=%name: 2026=& set year=2026& if not defined type set type=film& rem %
set name=%name: 2027=& set year=2027& if not defined type set type=film& rem %
set name=%name: 2028=& set year=2028& if not defined type set type=film& rem %
set name=%name: 2029=& set year=2029& if not defined type set type=film& rem %
set name=%name: 2030=& set year=2030& if not defined type set type=film& rem %

:: capitalize
set name=%name:a=A%
set name=%name:b=B%
set name=%name:c=C%
set name=%name:d=D%
set name=%name:e=E%
set name=%name:f=F%
set name=%name:g=G%
set name=%name:h=H%
set name=%name:i=I%
set name=%name:j=J%
set name=%name:k=K%
set name=%name:l=L%
set name=%name:m=M%
set name=%name:n=N%
set name=%name:o=O%
set name=%name:p=P%
set name=%name:q=Q%
set name=%name:r=R%
set name=%name:s=S%
set name=%name:t=T%
set name=%name:u=U%
set name=%name:v=V%
set name=%name:w=W%
set name=%name:x=X%
set name=%name:y=Y%
set name=%name:z=Z%
set name=%name:ä=Ä%
set name=%name:ö=Ö%
@ECHO关闭
SETLOCAL enabledelayedexpansion
::预防措施
::cd/d:\videos\series
::如果/i不是“%cd%”,则=“d:\videos\series”回显无效的序列目录(&d)退出/b
::如果不存在“飞行员插曲”,则回显飞行员插曲目录缺失。&&退出/b
::如果不存在“d:\other\scripts\lootname.cmd”则回显lootname缺失退出/b
(
对于/f“delims=“%%g IN('dir/s/b/a-d*.mp4*.mkv*.m4v*.avi*.flv*.mpg*.mpeg*.mpe*.wmv*.mov*.ts*.m2ts*.vob*.3gp*.rm”)DO(
rem调用d:\other\scripts\lootname.cmd%1数据
调用:提取“%%~ng”
ECHO!name!*%%g
)
)>tempfile.txt
ECHO zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
::文件的格式为extractedname*fullname
设置“lastname=”
设置“pilot=”
(
对于('sort tempfile.txt')中的/f“tokens=1*delims=*”%%g,请执行以下操作(
如果/i“%%g”==”!lastname!”(
REM具有相同extractedname的多个条目
如有规定,引航员(
找到REM第一集-要创建的目录
如果不存在“%%g”回显MD“%cd%\%%g”
如果需要,REM将飞行员移动到目录
如果/i“!pilotdir!”neq“%cd%\%%g\”ECHO MOVE“!pilot!”%cd%\%%g\”
雷姆和飞行员分手了
设置“pilot=”
)
如果/i“%%~dph”neq“%cd%%\%%g\”回显移动“%%h”“%cd%%\%g\”
)否则(
REM extractedname的第一次出现
如有规定,引航员(
REM引航员跟随引航员-仅引航员
如果/i“!pilotdir!”neq”%cd%\PILOT scents\“ECHO MOVE”!PILOT!”%cd%\PILOT scents\“
)
设置“导频=%%h”
设置“pilotdir=%%~dph”
设置“lastname=%%g”
)
)
)>什么,蝙蝠
端部
后藤:eof
有趣的练习

以上代码的注意事项:

我已经注释掉了所有的预防措施,因为它们不适用于我的系统

我假设
d:\other\scripts\lootname.cmd%1 data
将根据提供的文件名建立一个名为
name
的变量。我用一个名为
:extract
的例程代替了测试,只传递了文件名的名称部分。当然,此处的
%1
也需要更改

我没有对包含已知批处理问题制造者(如
)的文件名进行任何测试

我假设找到的任何返回唯一
[series]名称的文件都是一个pilot

因此-首先,进行完整的目录扫描并创建一个文件,其中包含格式为
seriesname*fullfilename
的行-注意分隔符
*
是无效的文件名字符

现在以这种格式获得这个列表后,对它进行排序并调用第二个
for
例程。
将序列名分配给
%%g
,将完整文件名分配给
%%h
。该文件将由一系列行组成,
peeppee
,其中
P
是一个“导频”——序列名在其中更改

因此-如果
%%g
与之前的
%%g
不同,那么我们有了一个新的试点,因此保存其序列名和完整文件名,以及完整文件名的目录部分(因为当时很容易访问)

如果我们接下来在同一系列中有一集,
%%g
将匹配,因此如果目标目录不存在,我们将“创建”目标目录,并将“pilot”文件名“移动”到该目录中(如果它不在正确的目录中),然后我们就完成了该pilot,因此清除变量
pilot
(这样移动
就不会重复). 最后,将这一集移到目录中

如果我们有下一个系列的试播,那么实际上我们也会做同样的事情,但是如果已经设置了
pilot
,那么我们需要将其作为一个单件移动到
pilot-scents
目录(如果还没有)

当文件列表用完时,我们可能只剩下一个试点插曲(即列表上最后一个是试点插曲)。为了克服这个问题,只需使用
*
分隔符添加一个all-
z
的虚拟记录。这将最后排序,看起来是一个新的系列名称ZZZZ。。。我们可以忽略它,因为它是一个假人

然后弹出一个文件
whattodo.bat
,其中包含执行任务所需的
move
s和
md
s

现在-如果要将所有这些
move
s更改为
call chkmove
,则可以编写一个例程来检查移动是否成功。与
md
s的想法相同

哦-顺便说一句:在批处理开始时,一个单独的
@echo off
将重新启动
@cd /d d:\videos\series
@if /i not "%cd%"=="d:\videos\series" echo invalid series dir. && exit /b
@if not exist "pilot episodes" echo pilot episodes dir missing. && exit /b
@if not exist "d:\other\scripts\lootname.cmd" echo lootname missing. && exit /b
@for %%i in (*) do @call :processing "%%i"
@exit /b

:processing
@if not exist %1 exit /b
@call d:\other\scripts\lootname.cmd "%~n1" data

:: move if dir exists. perfect.
@if exist "%name%" move %1 "%name%\" >nul && echo "%~dp1%name%\%~nx1" && exit /b

:: new. find and count possible others.
@set "count=0" & set "dots=%name: =.%"
@for %%i in ("%name% s*" "%dots%.s*") do @set /a count+=1
@for /r "pilot episodes" %%i in ("%name% s*" "%dots%.s*") do @set /a count+=1

:: move if single, pilot
@if "%count%"=="0" echo fatar error while pairing "%name%" && exit /b
@if "%count%"=="1" echo %1 | find /i "01e01" >nul && move %1 "pilot episodes\" >nul && echo "%~dp1pilot episodes\%~nx1" && exit /b

:: move set to new folder
@mkdir "%name%"
@for /r %%i in ("%name% s*" "%dots%.s*") do @move "%%i" "%name%\" >nul
@dir /s /b "%name%"