Пакет: для файлов больше чем, для файлов меньше чем - PullRequest
0 голосов
/ 31 октября 2018

Я хочу создать пакетный скрипт, который будет принимать все файлы изображений, которые больше, чем x, сжимать их в один .zip. Затем возьмите все оставшиеся файлы изображений, размер которых меньше того же размера x, и сожмите их в один .zip

Я пробовал несколько, несколько разных способов и не могу понять это. Я искал здесь, и все могучие Google лол Мои последние мысли - перечислить файлы, которые больше, в текстовом файле, временно, а затем использовать этот список для 7zip, чтобы сжать их, но не могу понять, как отобразить / распечатать / перечислить их в 7zip.

@ECHO OFF
SETLOCAL EnableDelayedExpansion

for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
for /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)

SET FOLDER=%~dp1
REM     Sets current directory

SET LOG="log.txt"

pushd %FOLDER%
REM     Changes directory to current

for %%a in ("%cd%") do SET NAME=%%~na
REM     Gets the last directory name and sets it as a variable

SET ZIPNAME=%NAME% - Originals.zip
SET ZIPNAME2=%NAME% - Photos.zip

if exist ".smaller.txt" del /F ".smaller.txt"
if exist ".larger.txt" del /F ".larger.txt"

if exist "%ZIPNAME%" del /F "%ZIPNAME%" | echo %MYDATE%_%MYTIME%: %COMPUTERNAME% deleted %ZIPNAME%>>%LOG%
if exist "%ZIPNAME2%" del /F "%ZIPNAME2%" | echo %MYDATE%_%MYTIME%: %COMPUTERNAME% deleted %ZIPNAME2%>>%LOG%
REM     Deletes old zips if they exists

FOR /F "usebackq delims=;" %%A IN (`dir /b *.jpg *.jpeg *.png *.gif *.bmp`) DO (

    IF %%~zA LSS 1048576 (
        ECHO %%A >>.smaller.txt
    ) ELSE (
        ECHO %%A >>.larger.txt
    )

)

FOR /F "tokens=* delims=" %%x IN (.smaller.txt) DO SET SMALLER=!SMALLER!%%x
FOR /F "tokens=* delims=" %%x IN (.larger.txt) DO SET LARGER=!LARGER!%%x

PAUSE

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Вот мой конечный продукт .. Спасибо за помощь!

@ECHO OFF
SETLOCAL EnableDelayedExpansion

FOR /f "tokens=2-4 delims=/ " %%a IN ('date /t') DO (SET mydate=%%c-%%a-%%b)
FOR /f "tokens=1-2 delims=/:" %%a IN ("%TIME%") DO (SET mytime=%%a%%b)
REM     My timestamp

SET FOLDER=%~dp1
REM     Sets current directory

IF NOT EXIST %SYSTEMDRIVE%\Logs MKDIR %SYSTEMDRIVE%\Logs
SET LOG="%SYSTEMDRIVE%\Logs\.picture_log.txt"
REM     Logging file and directory

PUSHD %FOLDER%
REM     Changes directory to current

FOR %%A IN ("%CD%") DO SET NAME=%%~NA
REM     Gets the last directory name and sets it as a variable

SET ZIP_O=%NAME% - Originals.zip
SET ZIP_R=%NAME% - Photos.zip
REM     Zip file names

IF EXIST ".larger.txt" DEL /F ".larger.txt"
IF EXIST ".smaller.txt" DEL /F ".smaller.txt"
REM     Delete old temporary files

IF EXIST "%ZIP_O%" DEL /F "%ZIP_O%" | ECHO %MYDATE%_%MYTIME%: %COMPUTERNAME% deleted %ZIP_O%>>%LOG%
IF EXIST "%ZIP_R%" DEL /F "%ZIP_R%" | ECHO %MYDATE%_%MYTIME%: %COMPUTERNAME% deleted %ZIP_R%>>%LOG%
REM     Deletes old zips if they exists

FOR /F "usebackq delims=;" %%A IN (`dir /b *.jpg *.jpeg *.png *.gif *.bmp`) DO (
    IF %%~zA LSS 1048576 (
        ECHO %%A >>.smaller.txt
    ) ELSE (
        ECHO %%A >>.larger.txt
    )
)
REM     Generate list of files, based off size

FOR /F "tokens=* delims=" %%x IN (.larger.txt) DO SET LARGER=!LARGER!%%x
FOR /F "tokens=* delims=" %%x IN (.smaller.txt) DO SET SMALLER=!SMALLER!%%x
REM     Read lists, put contents into variables

"C:\Program Files\7-Zip\7z" a -mx9 -tzip "%ZIP_O%" @.larger.txt -sdel | ECHO %MYDATE%_%MYTIME%: %COMPUTERNAME% compressed %ZIP_O%>>%LOG%
"C:\Program Files\7-Zip\7z" a -mx9 -tzip "%ZIP_R%" @.smaller.txt -sdel | ECHO %MYDATE%_%MYTIME%: %COMPUTERNAME% compressed %ZIP_R%>>%LOG%
REM     Compress images in separate .zips

IF EXIST ".larger.txt" DEL /F ".larger.txt"
IF EXIST ".smaller.txt" DEL /F ".smaller.txt"
REM     Delete temporary files
0 голосов
/ 31 октября 2018

Функция forfiles имеет атрибут @fsize, вы можете проверить.

Для каждого файла, который достаточно велик, вы выполняете 7z.exe a (добавить в архив).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...