Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - BAT файлом сравнить ряд файлов по размеру - если общий размер сходится удалить

Ответить
Настройки темы
CMD/BAT - BAT файлом сравнить ряд файлов по размеру - если общий размер сходится удалить

Новый участник


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

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


Здравствуйте.

Есть папка C:\1\
Внутри неё папка C:\1\2\

В папке 2 есть файл A.ZIP. Внутри него файлы:
1.txt
2.txt
3.txt
4.txt

В папке '1' имеются так же файлы:
1.txt
2.txt
3.txt
4.txt

Необходимо бат файлом сравнить общий размер файлов в архиве 'A.zip' и в папке '1'. Если общий размер файлов сходится - удалить txt файлы в папке 1. Если размер не сошёлся - не удалять. Поможете реализовать? Спасибо!

Постскриптум: сейчас вручную открываю архив в TC, смотрю общий размер файлов в архиве и сравниваю с размером файлов в папке - если сходится, файлы из папки удаляются.

Отправлено: 14:12, 10-10-2012

 

Аватара для gora

Ушёл из жизни


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

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


Попробуйте так:
Код: Выделить весь код
@Echo Off
Set FoldTXT=e:\Temp\1
Set Arch=e:\Temp\1\2\A.ZIP

For /R "%FoldTXT%" %%i In (*.txt) Do Set /a size +=%%~zi
For /F %%i In ('""C:\Program Files\7-zip\7z.exe" l "%Arch%""') Do Set sizeArch=%%i
If "%size%"=="%sizeArch%" Del /Q /F "%FoldTXT%\*.txt"
Пути укажите свои
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:10, 10-10-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

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


Спасибо - но почему-то не срабатывает чистка. Пути проверил, 7z.exe есть ...

неправильно размер текстовых файлов определяется - а 7z правильно размер определил....

Отправлено: 15:37, 10-10-2012 | #3


Аватара для gora

Ушёл из жизни


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

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


Цитата invisibleon:
неправильно размер текстовых файлов определяется »
В папке 1 нет подпапок в которых присутствуют файлы .txt ? Ибо на это не расчитывалось и первый цикл считает размер ВСЕХ .txt файлов в папке 1 и во вложенных в нее папках.

Отправлено: 15:46, 10-10-2012 | #4


Новый участник


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

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


Есть. Можно как-то ограничить только по папке 1 без вложенных папок?

спасибо большое

Отправлено: 15:48, 10-10-2012 | #5


Аватара для gora

Ушёл из жизни


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

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


Замените строку первого цикла на приведенную ниже:
Код: Выделить весь код
For %%i In ("%FoldTXT%\*.txt") Do Set /a size +=%%~zi
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:51, 10-10-2012 | #6


Новый участник


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

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


gora спасибо большое.

У меня последний вопрос (как обычно приходит в голову опосля).

А что, если в "папке 2" у меня несколько архивов - можно сделать условие такое:

1) Проверить даты создания архивов - определить самый последний созданный архив
2) Сверху размеров производить только с последним созданным архивом?


___________
Если нельзя как-то определить последний созданный архив - можно подсказать проверку размера по всем архивам, что правда не совсем желательно - так как это займёт немного дольше времени...

Спасибо!

Отправлено: 15:57, 10-10-2012 | #7


Аватара для gora

Ушёл из жизни


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

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


Проверяйте:
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
Set FoldTXT=e:\Temp\1
Set Arch=e:\Temp\1\2

Set tmax=
For %%i In ("%Arch%\*.zip") Do (
	Set tm=%%~ti
	Set tm=!tm:~8,2!!tm:~3,2!!tm:~0,2!!tm:~11,2!!tm:~14,2!
	If !tm! GTR !tmax! Set tmax=!tm!& Set namArch=%%~nxi
)
For %%i In ("%FoldTXT%\*.txt") Do Set /a size +=%%~zi
For /F %%i In ('""C:\Program Files\7-zip\7z.exe" l "%Arch%\%namArch%""') Do Set sizeArch=%%i
Echo %namArch%	%tmax%
If "%size%"=="%sizeArch%" (Echo %size% equal %sizeArch%) Else Echo %size% NOT equal %sizeArch%
Pause>Nul
Ограничение: даты архивов ограничены 2000 годом, с более старыми батник работать не будет.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:24, 10-10-2012 | #8


Новый участник


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

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


Цитата gora:
Ограничение: даты архивов ограничены 2000 годом, с более старыми батник работать не будет. »
У меня множество архивов с разной датой (но не старее 2000 года) - почему то берёт архив от сентября, тогда как "моложе" его ещё 20-30 архивов...
В чём может быть проблема?

Отправлено: 18:09, 10-10-2012 | #9


Аватара для gora

Ушёл из жизни


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

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


Цитата invisibleon:
В чём может быть проблема? »
1 Вставьте строку в цикл обработки папки с архивами:
Код: Выделить весь код
	Echo %%~ti
Запустите батник, весь вывод в консоль скопируйте и выложите здесь.
2 Какая ОС?

Отправлено: 18:46, 10-10-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - BAT файлом сравнить ряд файлов по размеру - если общий размер сходится удалить

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Удаление файлов по маске/размеру/времени изменения nineline Скриптовые языки администрирования Windows 6 28-05-2015 08:36
CMD/BAT - Не срабатывает скрипт переноса файлов по размеру - !!! с условием переименования !!! dark-------13 Скриптовые языки администрирования Windows 0 19-03-2012 15:27
CMD/BAT - [решено] Перемещение файлов по размеру dark-------13 Скриптовые языки администрирования Windows 4 19-03-2012 14:31
CMD/BAT - [решено] Удаление одинаковых файлов по размеру Arsenik77 Скриптовые языки администрирования Windows 27 08-08-2011 04:53
Ребята, IdSMTP1 может посылать письмо с файлом? Если “да”, к IkaMazini Программирование и базы данных 1 11-10-2004 01:46




 
Переход