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

Ответить
Аватара пользователя
sampir

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

Сообщение sampir »

Помогите пожалуйста осилить задачу:

Существуют файлы вида:

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")))
Аватара пользователя
kiripanda

Re: CMD/BAT - [решено] Сравнение файлов по части имени

Сообщение kiripanda »

Код:

Код: Выделить всё

@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
Аватара пользователя
sampir

Re: CMD/BAT - [решено] Сравнение файлов по части имени

Сообщение sampir »

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

Вернуться в «Скриптовые языки администрирования Windows»