Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Подскажите скрипт программу которые могут изменить название множества файлов со случа (http://forum.oszone.net/showthread.php?t=340208)

sergey14235 22-04-2019 11:09 2868652

Подскажите скрипт программу которые могут изменить название множества файлов со случа
 
Подскажите скрипт, программу которые могут изменить название множества файлов со случайного на артикул, выполнив поиск в текстовом файле по случайному имени, и забирая артикул для каждого имени файла следующий после случайного имени?

письма лучше присылать на почту vitaly9oleg@gmail.com

sergey14235 22-04-2019 12:03 2868666

рабочий пример

https://stackoverflow.com/questions/...ing-powershell


но нужно искать имя в файле и находить артикул следующий за именем и изменять названия файлов на артикул

mwz 22-04-2019 13:10 2868679

sergey14235, а зачем было размножать один и тот же вопрос аж по 4 темам?? Да ещё и просить ответ на почту. :read:

Iska 22-04-2019 16:41 2868710

И для работы не помешает архив с несколькими из «множества файлов» плюс «текстовом файле». С описанием на данном примере, что должно получиться в итоге.

sergey14235 22-04-2019 17:42 2868720

имеются файлы 710f7fa45c6911e9648d2cfda1bf577d.jpg
710f7fa45c6911e9648d2cfda1bf577d1.jpg
710f7fa45c6911e9648d2cfda1bf577d2.jpg


в файле Namefile.txt

<Артикул>020701BT</Артикул>
<Картинка>pictures/71/710f7fa45c6911e9648d2cfda1bf577d</Картинка>
<Артикул>020701BT1</Артикул>
<Картинка>pictures/71/710f7fa45c6911e9648d2cfda1bf577d1</Картинка>
<Артикул>020701BT2</Артикул>
<Картинка>pictures/71/710f7fa45c6911e9648d2cfda1bf577d2</Картинка>

как переименовать название картинка в артикул используя файл Namefile.txt и модифицируя программу $content = Get-Content C:\temp\ps\NewFile.txt
$files = Get-ChildItem c:\temp\ps\

$content |
%{
$currentLine = $_
$file = $files | Where-Object { $currentLine.StartsWith($_.Name.Replace(".xml", "")) }

Rename-Item $file.Name $currentLine

}


т.е получить
020701BT.jpg
020701BT1.jpg
020701BT2.jpg

Iska 22-04-2019 18:21 2868725

2sergey14235:
Цитата:

Цитата Iska
архив с несколькими из «множества файлов» плюс «текстовом файле». С описанием на данном примере, что должно получиться в итоге. »


Iska 23-04-2019 17:13 2868861

sergey14235, мне нужен был архив с файлами. Посему — сожалею, но дальше без меня.

sergey14235 24-04-2019 10:40 2868956

Вложений: 1
необходимо переименовать файлы 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</Картинка>

sergey14235 24-04-2019 13:33 2868993

почему программа не работает?

@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\

megaloman 24-04-2019 15:27 2869021

sergey14235, потому что у Вас нет точной ясной постановки.
Я этот скрипт удалил, он работал для
Цитата:

Цитата sergey14235
имеются файлы 710f7fa45c6911e9648d2cfda1bf577d.jpg
710f7fa45c6911e9648d2cfda1bf577d1.jpg
710f7fa45c6911e9648d2cfda1bf577d2.jpg
в файле Namefile.txt
<Артикул>020701BT</Артикул>
<Картинка>pictures/71/710f7fa45c6911e9648d2cfda1bf577d</Картинка>
<Артикул>020701BT1</Артикул>
<Картинка>pictures/71/710f7fa45c6911e9648d2cfda1bf577d1</Картинка>
<Артикул>020701BT2</Артикул>
<Картинка>pictures/71/710f7fa45c6911e9648d2cfda1bf577d2</Картинка>
как переименовать название картинка в артикул используя файл Namefile.txt и модифицируя программу $content = Get-Content C:\temp\ps\NewFile.txt
$files = Get-ChildItem c:\temp\ps\
$content |
%{
$currentLine = $_
$file = $files | Where-Object { $currentLine.StartsWith($_.Name.Replace(".xml", "")) }
Rename-Item $file.Name $currentLine
}
т.е получить
020701BT.jpg
020701BT1.jpg
020701BT2.jpg »

.
Я вообще перестал понимать, что и как надо переименовывать. По какому названию надо выбирать артикул. Или по части имени. Пока я взял паузу, мне надо понять задачу, чтобы что-то делать.

megaloman 24-04-2019 18:16 2869045

Цитата:

<Артикул>A92/950</Артикул>
<Картинка>2a/2a08886a170211e8f097141877341409</Картинка>
sergey14235, Невозможно переименовать файл
"2a08886a170211e8f097141877341409.jpg" в "A92/950.jpg"
так как символ / в имени недопустим. Что делать?
Код:

@Echo Off
cls
SetLocal
>nul chcp 1251
        Set "InFile=Z:\Box_In\*.jpg"
        Set "ArtFile=Z:\Box_In\namefile.txt"
        Set "KeyArt=Артикул"

        FOR /F "usebackq tokens=1,2 delims=<> " %%i IN ("%ArtFile%") DO (
                If /I "%KeyArt%"=="%%i" (Set "Art=%%j" &Set /A N=0) Else (
                        Call :FileArt "%%Art%%" %%j
                )
        )
        FOR %%f IN ("%InFile%") DO (
                FOR /F "usebackq tokens=2 delims==" %%e IN (`2^>nul Set %%~nf`) DO (
                        Ren "%%f" "%%e%%~xf" ||Echo !!! Incorrect file name "%%e%%~xf" not renamed "%%f"
                )
        )
EndLocal
Pause
Exit /B

:FileArt
        Set "FName=%~2"
        :Begin1       
                If Not "%FName%"=="%FName:*/=%" (Set "FName=%FName:*/=%" &GoTo :Begin1)
        If %N%==0 Set "%FName%=%~1"
        If Not %N%==0 Set "%FName%=%~1_%N%"
        Set /A N+=1
Exit /B

Скрипт сохранить в 1251 кодировке, так как в Вашем файле с артикулами именно такая кодировка


Время: 06:26.

Время: 06:26.
© OSzone.net 2001-