Имя пользователя:
Пароль:
 

Название темы: Архивирование каталога
Показать сообщение отдельно

Пользователь


Сообщения: 61
Благодарности: 19

Профиль | Отправить PM | Цитировать


megaloman, опробовал Ваш последний батник.
Что интересно - результат его работы в режиме Mode=0 (AllFilesMode) зависит от значения DirKey
То есть, в указанном режиме Mode=0 (AllFilesMode) при DirKey=/O:-N и DirKey=/O:N результаты работы в каталоге Dst существенно между собой различаются, хотя, по логике дел, они должны бы быть одинаковы. Если, конечно, я ничего не упускаю из вида.
Правильная, на мой взгляд, работа в режиме Mode=0 (AllFilesMode) достигается только в случае установки в команде Dir ключа прямой сортировки, т.е. при DirKey=/O:N.
Это, видимо, значит, что в режиме Mode=0 (AllFilesMode) от DirKey нужно вообще оказаться и явно устанавливать ключ прямой сортировки для Dir, т.е. /O:N.
С учётом изложенного, модифицированная версия полностью работающего батника, кажется наконец-то, обретает завершённый вид:
Незначительная модификация

Код: Выделить весь код
@Echo Off
cls
    Set "Mask=File_2018-10-??_Original."

    Set "Src=Z:\Box_In\Мой контент\Книги"
    Set "Dst=Z:\Книги.arc"

    Set "Log=%Dst%\%~nx0.log"   &Rem Путь к лог-файлу. Можно указать в любом доступном месте с любым именем.

    Set /A Mode=1         &Rem Mode=1 - один файл/папка по маске; Mode=0 - все файлы/папки по маске
    Set "DirKey=/O:-N"    &Rem если выбран режим один файл/папка (Mode=1), то выберется самый последний по алфавиту
    Rem Set "DirKey=/O:N"    &Rem если выбран режим один файл/папка (Mode=1), то выберется самый первый по алфавиту

    Set Arc="C:\Program Files\WinRar\WinRar.exe" a -r -dh -m3 -s -rr5p -ts+ -y
    Set "Ext=rar"

    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 /O:N`) 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%

rem pause
Exit /B %Err%

:OutArc
    If Not Exist "%Dst%\%~1.*" (
        >>"%Log%" Echo %Date% %Time% "%Src%\%~1" 
        %Arc% "%Dst%\%~1.%Ext%" "%~1"
    )
Exit /B

Посмотрите, пожалуйста.

Последний раз редактировалось UserX, 07-11-2018 в 18:48.


Отправлено: 18:23, 07-11-2018 | #27

Название темы: Архивирование каталога