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

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

Ответить
Настройки темы
CMD/BAT - [решено] Сравнение файлов по части имени

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


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


Конфигурация

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


Помогите пожалуйста осилить задачу:
Существуют файлы вида:
Call1_9_86686567_1_31.nmf
Call1_10_86686567_1_31.nmf
Call1_11_86686567_1_31.nmf
В общем говоря если часть имени одинакова после второго символа "_", то убить все кроме одного.

Так как сначала предполагалось, что у них у всех одинаковый размер, и их можно уничтожать по этому признаку, то был составлен скрипт (ниже), который лазил по подпапкам и это добросовестно делал.
Но потом оказалось что размер может чуть отличаться, и единственный способ - обрабатывать их по имени. Только вот работать со буквами оказалось совсем тяжко.
Помогите пожалуйста доработать.

@(
for /f "tokens=*" %%i in ('dir /b /s /ad') do (
pushd "%%i"
for /f "delims=" %%f in ('dir/b/a-d/os') do @(
if defined $fz (set/a "$fc=$fz-%%~zf"
call set "$fc=%%$fc:0=%%"
if not defined $fc del "%%f")
set "$fz=%%~zf")))

Отправлено: 16:30, 15-11-2012

 

Старожил


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

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


Код: Выделить весь код
@echo off &setlocal enableextensions

for /f "delims=" %%i in ('dir /b/s/ad') do (
	pushd "%%i"
	call :list
	popd
)
goto :eof

:list
if exist list.tmp del /q list.tmp
for /f "delims=" %%a in ('dir /b/a-d Call1_*_*.nmf') do (
	for /f "tokens=2,* delims=_" %%b in ("%%a") do if not "%%~nc"=="" echo "%%c" "%%a" >>list.tmp
)
set digs=""
for /f "tokens=1,*" %%a in ('sort list.tmp') do call :del_dups %%a %%b
del /q list.tmp
goto :eof

:del_dups
if %digs% == %1 del /q %2
set digs=%1
goto :eof

Последний раз редактировалось kiripanda, 16-11-2012 в 22:05.

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

Отправлено: 21:46, 16-11-2012 | #2



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

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


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


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

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


Kiripana, огромное Вам спасибо!!! Работает на задаче без всяких исправлений, как есть. Сегодня уже проходил боевое применение на массиве звонков. Все отлично! Еще раз большое спасибо, спасли кучу времени и нервов, из-за возможных ошибок ручной работы.

Отправлено: 19:57, 18-11-2012 | #3



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Сравнение текстовых файлов Speedy Программное обеспечение Windows 9 30-03-2015 02:42
CMD/BAT - Сравнение и объединение файлов veresov Скриптовые языки администрирования Windows 4 08-08-2012 10:44
CMD/BAT - Сравнение файлов по имени stasy9110 Скриптовые языки администрирования Windows 1 04-12-2011 21:27
CMD/BAT - Выборка файлов по части названия скуби_ДУ Скриптовые языки администрирования Windows 7 03-08-2011 10:35
Сравнение файлов Guest Программирование и базы данных 6 24-04-2004 04:47




 
Переход