Войти

Показать полную графическую версию : [решено] извлечение имени файлов, а также части имени с дописанием


Alexander_88
19-03-2015, 11:37
Здравствуйте, необходимо сделать не очень легкие манипуляции, можно ли сделать это бат файлом?
Есть папка с файлами.. вот пример имени файлов, которые там лежат

00001cort_SVD-934_google.com.avi
00002cort_PRDK-031_google.com.avi
00003cort_THRI-131_google.com.mp4
00004cort_ERFH-020_google.com.wmv
00005cort_RH-063_A_google.com.wmv
00006cort_WQ-003_B_google.com.wmv
00007cort_GDJ-351_google.com.wmv
00008cort_VHE-321_google.com.mp4
00009cort_JTW-173_google.com.wmv
00010cort_FGUW-181_google.com.wmv
00011cort_QX-141_A_google.com.wmv
00012cort_YUR-141_B_google.com.wmv
00013cort_GBHJ-320_google.com.mp4
00014cort_UWHF-337_google.com.mp4
а также многие другие файлы, не похожие на эти названия.

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

В первый тхт извлекается имя файла, при этом игнорируя его расширение, + в начало и конец файла добавляется то, что я укажу (2 переменных)

Во второй тхт извлекается, куски имени файла, которые находятся между одними кусками текста имени файла и другими (я их должен буду указать)

Вот пример работы над папкой с файлами, которыми я указал выше:

Данные мной:
путь к 1му тхт: C:\work\1.txt
путь ко 2му txt: C:\work\2.txt

данные для вставки в начало и конец первого тхт: (а=начало, b=конец)

а=http://mysyte.com/wp-content/uploads/
b=_.jpg

данные для указания между чем и чем будет извлекаться имя второго тхт: (x=от, y=до)

x=cort_
y=_google

После приминения бат файла, должо получиться два тхт файла с данным собержанием:

1.тхт
http://mysyte.com/wp-content/uploads/00001cort_SVD-934_google.com_.jpg
http://mysyte.com/wp-content/uploads/00002cort_PRDK-031_google.com_.jpg
http://mysyte.com/wp-content/uploads/00003cort_THRI-131_google.com_.jpg
http://mysyte.com/wp-content/uploads/00004cort_ERFH-020_google.com_.jpg
http://mysyte.com/wp-content/uploads/00005cort_RH-063_A_google.com_.jpg
http://mysyte.com/wp-content/uploads/00006cort_WQ-003_B_google.com_.jpg
http://mysyte.com/wp-content/uploads/00007cort_GDJ-351_google.com_.jpg
http://mysyte.com/wp-content/uploads/00008cort_VHE-321_google.com_.jpg
http://mysyte.com/wp-content/uploads/00009cort_JTW-173_google.com_.jpg
http://mysyte.com/wp-content/uploads/00010cort_FGUW-181_google.com_.jpg
http://mysyte.com/wp-content/uploads/00011cort_QX-141_A_google.com_.jpg
http://mysyte.com/wp-content/uploads/00012cort_YUR-141_B_google.com_.jpg
http://mysyte.com/wp-content/uploads/00013cort_GBHJ-320_google.com_.jpg
http://mysyte.com/wp-content/uploads/00014cort_UWHF-337_google.com_.jpg

2.txt
SVD-934
PRDK-031
THRI-131
ERFH-020
RH-063_A
WQ-003_B
GDJ-351
VHE-321
JTW-173
FGUW-181
QX-141_A
YUR-141_B
13GBHJ-320
14UWHF-337

Вот такие серьезные дела :unsure:

Foreigner
19-03-2015, 12:15
@echo off
setlocal

pushd "C:\Folder"

set "prefix=http://mysyte.com/wp-content/uploads/"
set "postfix=_.jpg"

for %%i in (*cort_*) do (

1>>1.txt echo %prefix%%%i%postfix%
for /f "tokens=2 delims=_" %%j in ("%%i") do 1>>2.txt echo %%j

)

popd

Alexander_88
19-03-2015, 12:44
спасибо, попробовал, почти все хорошо, только вот что:
для 1ого тхт не игнорируется расширение файла (вместе с точкой)
а для 2ого тхт я не понял куда вводить данные от и до, попробовал, извлекает хорошо, но вот к примеру для файла
00005cort_RH-063_A_google.com.wmv
он должен извлеч RH-063_A
а извлекает RH-063

Foreigner
19-03-2015, 13:32
Alexander_88, Тогда так, но при условии, что google.com это неизменяемая часть, иначе по каким критериям определять нужную составную часть названия?

@echo off
setlocal

pushd "C:\Folder"

set "prefix=http://mysyte.com/wp-content/uploads/"
set "postfix=_.jpg"

for %%i in (*cort_*) do (

1>>1.txt echo %prefix%%%~ni%postfix%

for /f "tokens=2,3 delims=_" %%j in ("%%i") do (

if not "%%k"=="google.com%%~xi" (

1>>2.txt echo %%j_%%k

) else (

1>>2.txt echo %%j

)))

popd

Alexander_88
19-03-2015, 14:15
спасибо.. да я буду сам задавать, и это будет постоянным... а можно еще сделать, чтобы этот тхт чистился вначале, т.е. сейчас он наполняется постоянно, а нужно чтобы 1ый запуск его наполнил, а потом при втором, наполнил второй запуск, но результатов первого там уже не было

Foreigner
19-03-2015, 15:10
Alexander_88, перед первым for добавьте команду 'cd.>1.txt' или 'del 1.txt'

Alexander_88
19-03-2015, 15:17
Спасибо, попробовал, все работает :)

Alexander_88
09-05-2015, 01:45
delete




© OSzone.net 2001-2012