sampir
15-11-2012, 16:30
Помогите пожалуйста осилить задачу:
Существуют файлы вида:
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")))
Существуют файлы вида:
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")))