UserX,
Цитата UserX:
чтобы при наличии в каталоге Dst архивов (*.rar, *.zip, *.7z и пр.) »
|
Хаос в данных == непредсказуемому результату.
При анализе наличия архива по маске Файл.* получим соответствие с Файл.jpg.*=Файл.* с ключом /O:-N
Гарантировать, что при ключе /O:N не получится еще какой-нибудь непредсказуемый пропуск, не берусь.
Чтобы результат был предсказуем (работа батника надежнее),то:
Либо считаем, что все архивы имеют расширение %Ext% (в нашем случае Rar), тогда исправление:
Код:

:OutArc
If Not Exist "%Dst%\%~1.%Ext%" (
Либо надо перечислить все возможные расширения архивов
Код:

@Echo Off
cls
Set "Src=Z:\Box_In"
Set "Mask=??10??.*"
Set /A Mode=0 &Rem 1= 1 файл/папка, 0=все файлы/папки по маске
Set "DirKey=/O:-N" &Rem /O:-N если выбирается один файл/папка, то выберется самый последний по алфавиту
Set "Dst=Z:\Книги.arc"
Set "Log=%Dst%\%~nx0.log" &Rem Путь к лог-файлу. Можно указать в любом доступном месте с любым именем.
Set Arc="C:\Program Files\WinRar\WinRar.exe" a -r -dh -m3 -s -rr5p -ts+ -y
Set "Ext=rar"
Set "AllExt=rar zip 7z arc"
Pushd "%Src%" || (Set MSG=Folder not Found "%Src%" &Set /A Err=2 &GoTo :End)
If Not Exist "%Dst%" Md "%Dst%" || (Set MSG=Folder not Created "%Dst%" &Set /A Err=3 &GoTo :End)
Set /A Err=1
If %Mode%==0 For /F "usebackq delims=" %%d IN (`2^>nul Dir "%Src%\%Mask%" /B %DirKey%`) DO (Set /A Err=0 &Call :OutArc "%%d")
If %Mode%==1 For /F "usebackq delims=" %%d IN (`2^>nul Dir "%Src%\%Mask%" /B %DirKey%`) DO (Set /A Err=0 &Call :OutArc "%%d" &GoTo :End)
:End
Popd
If "%Err%"=="1" (Set MSG=File or Folder not Found "%Src%\%Mask%" %DirKey%)
If Not "%Err%"=="0" >>"%Log%" Echo %Date% %Time% %Msg%
pause
Exit /B %Err%
:OutArc
FOR %%e IN (%AllExt%) DO If Exist "%Dst%\%~1.%%~e" Exit /B 0
>>"%Log%" Echo %Date% %Time% "%Src%\%~1"
%Arc% "%Dst%\%~1.%Ext%" "%~1"
Exit /B 0
И вааще, смесь файлов/папок с одинаковыми именами и разными расширениями может дать неожиданный результат при любых алфавитных сортировках даже при отборе 1 файла с маской с расширением .*
Удалите в Вашем наборе папку 181027 и, в зависимости от ключа сортировки, будете иметь
или 181028.rar или 181030.jpg.rar
Так что при смеси кони/люди (файлы/папки c одинаковыми именами, но разными расширениями) откажитесь от маски с расширением .* и используйте только жестко определённое расширение.