PDA

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


бомбино
23-04-2022, 16:32
Привет! Нужно немного необычное переименование всех файлов в папке, через cmd:

1172642 - 1280x720 1980K.ts
1173926- 1280x720 1980K.ts
1174904 1280x720 2340K.ts
1174873 - 1280x720 1980K.ts
1174873 - 1280x720 1980K (2).ts
1174873- 1280x720 1980K (2).ts

Нужно отрезать первый цифровой блок (до минуса или пробела) и для каждого файла сходить на xml http://www.site.com/xml/webservice.php?a=get_model_info_semi_private&model_id=1172642 (в конце URL-a переменная вырезанная только что из начала имени, разная), и в xml найти строку <name_display>имя</name_display> . Между тэгами будет имя модели, в данном примере вместо 'имя' "Giselle Kaufman". И это найденное имя добавить в самое начало имени файла а ля : "Giselle Kaufman 1172642 - 1280x720 1980K.ts" И так до конца всех файлов в папке. Готов заплатить 'на пиво' за работу. Спасибо!

PS: в туториале нашел что-то похожее на требуемое: How to add a prefix to file names in batch. Here we try to add ‘Work’ to every .ts file in the current folder and subfolders:
forfiles /S /M *.ts /C "cmd /c rename @file Work@file"

Но вместо добавление слова Work в имя файла нам нужно добавить переменную достанную из url-a, вот и все отличие.

Fors1k
23-04-2022, 18:02
$localPath = "D:\Models"
$webPath = "https://www.flirt4free.com/xml/webservice.php?a=get_model_info_semi_private&model_id="

Get-ChildItem $localPath -File | ForEach {
$id = $_.Name -Replace "\D.+"
$data = IRM "$webPath$id" -UseBasic
$name = $data.performers.performer.model_info.name_display +" "+ $_.Name
Rename-Item -Literal $_.FullName $name
}

бомбино
23-04-2022, 18:13
Fors1k спасибо огромное, потестирую! и в PM напишу.




© OSzone.net 2001-2012