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

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

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

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


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

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


Изменения
Автор: Archy_A@twitter
Дата: 04-04-2018
Добрый день, подскажите, пожалуйста.
Есть две папки, в них одни и те же файлы, но разного размера.

Надо брать файл из папки А, смотреть его размер, смотреть размер этого же файла в папке В, и если размер файла в А меньше, то мувить его в папку В, если такой же или больше - просто удалять файл в папке А и переходить к след. файлу.

Проще всего во второй папке увидеть размер другим, вложенным for, наверное.

Код: Выделить весь код
@Echo Off

rem Папка А
set resize=C:\Desktop\i-s_images\img\games\fix

rem Папка В
set orig=C:\Desktop\i-s_images\img\games\orig

for %%F in ("%resize%\*.*") do for %%A in (%orig%\%%~nxF) do echo %%~nxF %%~zF -- %%~nxA %%~zA

Отправлено: 12:18, 04-04-2018

 

Ветеран


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

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


Archy_A@twitter, а если, несмотря на:
Цитата Archy_A@twitter:
в них одни и те же файлы, »
окажется так, что в каталоге «Папка А» файл есть, а в каталоге «Папка В» его вообще нет — то что делать?

Цитата Archy_A@twitter:
Проще всего во второй папке увидеть размер другим, вложенным for, »
Проще всего использовать процедуру, куда передавать полные имена файла источника, файла приёмника и использовать %~z1 и %~z2, наподобие (без каких-либо проверок):
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=C:\Мои проекты\0148\Папка А
set sDestFolder=C:\Мои проекты\0148\Папка В

for %%i in ("%sSourceFolder%\*.*") do call :Check "%%~i" "%sDestFolder%\%%~nxi"

endlocal
exit /b 0

:Check
	echo Source:     [%~1], size: [%~z1]
	echo Destination [%~2], size: [%~z2]
	
	if %~z1 lss %~z2 (
		echo Moving [%~1] into [%~dp2]
		>nul move /y "%~1" "%~dp2"
	) else (
		echo Deleting [%~1]
		del /f /q "%~1"
	)

	exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:07, 04-04-2018 | #2



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

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


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


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

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


Ох не сказал бы, что проще , спасибо, а Ваш вариант реально переделать под рекурсивную проверку всех файлов в подпапках и подпапках подпапок?
С переносом, естественно, относительно правильного пути? Был бы Вам очень признателен.

У меня заработал мой вариант так, в конце концов, но рекурсию он не умеет и уметь не будет без лютых танцев
Код: Выделить весь код
set resize=C:\Desktop\i-s_images\img\games\fix
set orig=C:\Desktop\i-s_images\img\games\orig

for %%F in ("%resize%\*.*") do if EXIST %orig%\%%~nxF for %%A in (%orig%\%%~nxF) do if %%~zF LSS %%~zA ( 
   move /Y %%F %orig% 
) else ( 
   del /F /Q %%F 
)

Последний раз редактировалось Archy_A@twitter, 04-04-2018 в 15:01.


Отправлено: 14:51, 04-04-2018 | #3


Ветеран


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

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


Archy_A@twitter, Вы не ответили на вопрос:
Цитата Iska:
окажется так, что в каталоге «Папка А» файл есть, а в каталоге «Папка В» его вообще нет — то что делать? »
Тот же вопрос и по поводу каталогов.

Отправлено: 15:15, 04-04-2018 | #4


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


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

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


Ничего. Я у себя ставлю if EXIST. По логике, его не надо ни мувить ни удалять, пусть останется, и будет видно несоответствие потом.

Отправлено: 15:36, 04-04-2018 | #5


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


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

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


В общем спасибо, забил на рекурсию и в скрипт фотошопа добавил необходимый функционал.
Спасибо за помощь in any case )

Отправлено: 18:03, 04-04-2018 | #6


Ветеран


Contributor


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

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


Archy_A@twitter, Что требуется? Взять все файлы в папке A и сравнить их со всеми файлами с теми же именами в папке и подпапках B? Или взять все файлы из папки и подпапок A и сравнить их со всеми файлами с теми же именами в папке и подпапках B?
Цитата Archy_A@twitter:
С переносом, естественно, относительно правильного пути? »
Как это понять. Пример приведите с путями.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 20:36, 04-04-2018 | #7


Ветеран


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

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


megaloman, полагаю, второе:
Цитата megaloman:
Или взять все файлы из папки и подпапок A и сравнить их со всеми файлами с теми же именами в папке и подпапках B? »

Отправлено: 23:30, 04-04-2018 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Подскажите как настроить отображение файлов во всех папках списком? Flurt Microsoft Windows 7 23 09-12-2020 00:57
WSUS - требуется установка одних и тех же обновлений dahiko WSUS 0 15-02-2016 11:08
CMD/BAT - [решено] Вывод на экран имен двух одинаковых файлов, находящихся в разных папках. taori Скриптовые языки администрирования Windows 2 25-01-2015 23:23
CMD/BAT - [решено] вычислять md5 двух файлов, писать их в файл, при следующем вычислении сравнивать Udar_Nick Скриптовые языки администрирования Windows 4 16-10-2014 17:49
Можно ли установить разные политики для одних и тех же юзеров? Vowan Microsoft Windows NT/2000/2003 3 15-06-2007 16:46




 
Переход