PDA

Показать полную графическую версию : Как исправить программу?


sergey14235
24-04-2019, 15:13
необходимо переименовать файлы 710f7fa45c6911e9648d2cfda1bf577d.jpg
cde9bde81a5b11e96b882cfda1bf577d.jpg
2af8db480fca11e71a9a141877341409.jpg

в артикул беря артикул из файла namefile.txt по названию картинка т.е. получить 020701BT.jpg
040109GT.jpg

также необходимо чтобы для картинки cde9bde81a5b11e96b882cfda1bf577d.jpg название получалось путем добавления артикул 020701BT плюс 1
а для картинку d266b9021a5b11e96b882cfda1bf577d.jpg название получалось путем добавления артикул 020701BT плюс 2
т.е. получаем 020701BT1.jpg 020701BT2.jpg




namefile.txt прилагаю внизу

файл
<Артикул>020701BT</Артикул>
<Картинка>710f7fa45c6911e9648d2cfda1bf577d</Картинка>
<Картинка>cde9bde81a5b11e96b882cfda1bf577d</Картинка>
<Картинка>d266b9021a5b11e96b882cfda1bf577d</Картинка>
<Артикул>040109GT</Артикул>
<Картинка>2af8db480fca11e71a9a141877341409</Картинка>
<Картинка>2d2190400fca11e71a9a141877341409</Картинка>
<Артикул>7696</Артикул>
<Картинка>670cfeec16b111e6cd8f141877341409</Картинка>

программа

@Echo Off
Set "InFile=C:\t\*.jpg"
Set "ArtFile=C:\t\namefile.txt"

Set /A N0=100001
Set /A N=%N0%-1

FOR /F "usebackq tokens=1,2,4 delims=^<>/ " %%i IN ("%ArtFile%") DO (
If "%%k"=="" (Set /A N+=1 &Call Set "@@Art%%N%%=%%j")
If Not "%%k"=="" Call Set "@@Fnm%%N%%=%%k"
)
FOR %%f IN ("%InFile%") DO (
FOR /L %%i IN (%N0%,1,%N%) DO Call :ArtRen "%%f" "%%@@Fnm%%i%%" "%%@@Art%%i%%"
)
Exit /B

:ArtRen
If /I "%~n1"==%2 Ren %1 "%~3%~x1"
Exit /B\

alpap
24-04-2019, 17:37
sergey14235,
есть вопрос-проблема
что делать со строками:
<Артикул>A92/950</Артикул>
<Артикул>A92/700</Артикул>
ведь символ / нельзя использовать в именах, а если брать только первую часть: A92 или вторую: 700, то есть немалая вероятность наличия строк:
<Артикул>A92</Артикул>
<Артикул>950</Артикул>
и тут уже тоже надо бороться с повтором верхнего уровня.
По именам строк:
<Картинка>cd/cde9bde81a5b11e96b882cfda1bf577d</Картинка>
тоже есть вопрос, брать только вторую часть относительно /, по той же причине что выше указано?
Ну и для пущей ясности, могут ли быть (уже или потом) в строках Артикулов или Картинок запрещенные для имени символы: * < > \ / | ? :

Iska
24-04-2019, 17:58
запрещенные для имени символы: * < > \ / | ? : »
Ещё двойные кавычки: Naming Files, Paths, and Namespaces - Windows applications | Microsoft Docs (https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file).

alpap
24-04-2019, 20:59
Ещё двойные кавычки »
ага, пропустил.
кстати код явно megaloman делал, его "почерк".

megaloman
24-04-2019, 21:37
alpap, кстати код явно megaloman делал, его "почерк". » Каюсь. Подвергайте меня остракизму и другим нехорошим словам :)
sergey14235, программу исправить нельзя, она делалась для другой постановки. И я её убил, она бессмысленна после обнародования последнего варианта постановки Я выдал другое решение. Эта задача расползлась в 2 темы. (http://forum.oszone.net/thread-340208.html)




© OSzone.net 2001-2012