PDA

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


Страниц : 1 2 [3]

IVa_
08-03-2015, 05:13
Происходит следующее? это при переименовании mp3.В чем дело не могу понять.
Не удается индексировать в объект типа System.IO.FileInfo.

Foreigner
08-03-2015, 09:06
IVa_, Попробуйте заменить rename-item на move-item с параметром -LiteralPath

yurfed
08-03-2015, 09:20
IVa_, вам скрипт только ради интереса нужен? А то ведь есть готовые и удобные решения.
Например [SVS] Rename Files - универсальная программа переименования файлов, MP3 тегов и текста (http://www.svs-vadella.narod.ru/programs_svs/svs_renamefiles.html)
Ну и до кучи - Переименование файлов (http://www.softportal.com/dlcategory-397-1-0-0.html)

Iska
08-03-2015, 13:14
yurfed, я уже пытался ажник во втором сообщении предложить автору подобное ;).

Foreigner
08-03-2015, 14:13
Iska, Для разовых действий конечно так. А вот если, допустим, хочется автоматизировать процесс переименования файлов? Мне, например, лень лезть в папку и переименовывать новые, легче запустить скрипт, благо консоль всегда открыта.

Iska
08-03-2015, 14:38
А вот если, допустим, хочется автоматизировать процесс переименования файлов? Мне, например, лень лезть в папку и переименовывать новые, легче запустить скрипт, благо консоль всегда открыта. »
Он умеет:
ReNamer can be run in command line mode, with lots of parameters. This allows you to select your files in explorer (or any other application) and do one-touch renaming.

P.S. Я ничуть не возражаю против использования скриптов.

iccup.platoon@vk
08-03-2015, 17:17
Я тихонечко оставлю тут батник, и пойду дальше.
Переменную path поменять на путь к папке с mp3. Не терпит скобочек в именах файлов - "(" & ")".


@echo off
setlocal enabledelayedexpansion
set i=0
set path=D:\sandbox\BATTEST\
for /f "tokens=*" %%F in ('dir !path!*.mp3 /b') do (
set /a i=i+1 & ren "%%F" "!i!%%~xF"
)

IVa_
08-03-2015, 17:52
rename-item на move-item с параметром -LiteralPath » параметр -lit не ругается, но ошибка Не удается индексировать в объект типа System.IO.FileInfo.
остается, интересное,то что файлы переименовывает за исключением данной ошибки все работает.

IVa_
08-03-2015, 19:43
PowerShel v2.0
$dirs = gci "C:\Users" -recurse

foreach ($dir in $dirs) {

if ( test-path "$($dir.fullname)\*.jpg" ) {

$files = gci $dir.fullname '*.jpg'

1..$files.count | % { rename-item $files[($_-1)].fullname "$( '{0:d3}' -f $_ ).jpg" -whatif }


}}
Рабочий скрипт, групповое переименования файлов.(для изменения формата файлов вписать вместо jpg нужный формат )
Скрипт также переименовывает файлы в дочерних директориях.
Параметр -whatif тестирует скрипт, без переименования.Для работы уберите данный параметр.
Благодарю Foreigner за предоставление данного скрипта.

IVa_
13-03-2015, 13:27
Возможно такое при переименовании файлов создать текстовый файл который сохранит все имена переименованных файлов.
То-есть сначала сохранить в текстовый файл имена файлов до переименования, а после переименовать?

Foreigner
13-03-2015, 16:08
Как-то так, не проверял

....

1..$files.count | % {

rename-item $files[($_-1)].fullname "$( '{0:d3}' -f $_ ).jpg" -whatif
"$($files[($_-1)].fullname) => $( '{0:d3}' -f $_ ).jpg" | add-content log.txt

}}}

IVa_
21-03-2015, 21:57
Как-то так, не проверял »
$dirs = gci "C:\Users\MOC\Desktop\Прожиг\Music" -recurse

foreach ($dir in $dirs){

1..$files.count | % {

rename-item $files[($_-1)].fullname "$dirs.mp3" -whatif
"$($files[($_-1)].fullname) => $dirs.mp3" | add-content log.txt

}}
Скрипт отлично отрабатывает,но есть мелкий недочет, не могу сообразить каким путем выстроить в тексте файлы в столбец.То есть вот так :
file1.mp3
file2.mp3
file3.mp3
Если не ошибаюсь за это отвечает параметр -f$( '{0:d3}' -f $_ »

IVa_
21-03-2015, 22:47
$dirs = gci "C:\Users\MOC\Desktop\Прожиг" -recurse

foreach ($dir in $dirs){

1..$files.count | % {

rename-item $files[($_-1)].fullname "$dirs( '{0:d3}' -f $_ ).mp3" -whatif
"$($files[($_-1)].fullname) => $( $dir -f $_ ).mp3" | add-content log.txt

}}
Тему закрываю всем спасибо

$MOC = gci "C:\Users\MOC\Desktop\Прожиг\Music\" -recurse
#Назначаем путь для переменной
foreach ($dir in $dirs){

1..$file.count | % {

rename-item $files[($_-1)].fullname -whatif
"$($file[($_)].fullname) => $dir " | add-content log.txt

}}




© OSzone.net 2001-2012