PDA

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


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

IVa_
18-02-2015, 16:52
Столкнулся с проблемой понимания скрипта, Ситуация выглядит следующим образом, нужно переименовать большую коллекцию MP3 файлов.Вместо названия пронумеровать каждый файл в папке.Нашел скрип, и не могу понять что нужно делать.Помогите разобраться.
Хотя в нем все подробно разжевано все равно возникают трудности.

Iska
18-02-2015, 17:17
Вместо названия пронумеровать каждый файл в папке.Нашел скрип, и не могу понять что нужно делать. »
IVa_, возьмите ReNamer « Products « den4b.com (http://www.den4b.com/?x=products&product=renamer).

Foreigner
18-02-2015, 17:41
IVa_, Просто пронумеровать? Без названия? Я переименовываю исходя из тегов (с помощью taglib-sharp). Ваш вариант:

$dirs = gci "d:\music" -dir -recurse

foreach ($dir in $dirs) {

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

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

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


}}

После проверки уберите ключ -whatif (он выводит предполагаемый результат)

IVa_
18-02-2015, 19:33
Да названия не к чему, перебрал, лучшие треки.Хотя и с название не помешает заморочек больше.


Get-ChildItem : Не удается найти параметр, соответствующий имени параметра "dir
".
строка:1 знак:28

Iska
18-02-2015, 20:11
IVa_, опять предложу воспользоваться ReNamer ;), он умеет работать и с тэгами.

Foreigner
18-02-2015, 20:28
IVa_, А какая версия Powershell?

$host.version.tostring()

Если 2.0 и ниже:

$dirs = gci "d:\music" -recurse | ? { $_.psiscontainer }

foreach ($dir in $dirs) {

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

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

1..$files.count | % { move-item -lit $files[($_-1)].fullname "$($dir.fullname)\$( '{0:d3}' -f $_ ).mp3" -whatif }


}}

На сколько помню до 3-ей (или 4-ой?) у gci (get-childitem) нет контекста для файловой системы и у rename-item нет ключа -literalpath

Iska
18-02-2015, 20:41
у gci (get-childitem) нет контекста для файловой системы »
Растолкуйте подробнее, пожалуйста. Для вышеприведённого (http://forum.oszone.net/post-2473010.html#post2473010) примера.

Foreigner
18-02-2015, 20:42
Iska, https://technet.microsoft.com/en-us/library/hh847897.aspx

Iska
18-02-2015, 21:01
Foreigner, перефразирую вопрос: каким именно образом, по Get-Help или иначе (но локально), можно выяснить параметры командлета, специфичные для конкретного провайдера? Ибо контекст-то есть, как я понимаю, но как выяснить указанные детали?!

Foreigner
18-02-2015, 21:22
Iska, Наверное никак... Сам случайно натолкнулся в чьем-то скрипте на параметр -directory, ну и пошел в яндекс.
Я пытался так (но не знаю правильно ли вообще):

help get-childitem -functionality 'filesystem'

Лезет в сеть и ничего не находит

IVa_
18-02-2015, 21:29
Убрал ключ -lit и все пошло нормально, только это с ключом -whatif.В реальности применю скрипт когда все соберу, подкинули еще файликов, нужно все это перебрать.Я так понимаю в каждой папке файлы будут переименованы с индексом 001-009.Если да то это почти то что нужно.С найденного мною скрипта добавлю еще создание плейлиста.
Версия PS была обновлена только я не могу понять как эти обновления вступают в силу.А так наверное V.1. а нет проверил 2.0
Iska, Программу тоже загружу посмотрю, и оценю её в работе.Русский в настройках имеется?
Foreigner, -lit что это за командлет ?
Без него все идет, без потерь.Ничего я не произойдет.С моими mp3шками.

Kazun
18-02-2015, 21:33
Указать параметр Path и какой провайдер интересует:
Get-help Get-ChildItem -Path cert:\

Iska
18-02-2015, 21:37
Foreigner, если попробовать тупо:
Get-Help FileSystem
что будет перечислено в динамических параметрах, например?

IVa_
18-02-2015, 21:38
Kazun, Что с этим делать?

Foreigner
18-02-2015, 21:43
Kazun, Все равно выводит обычную справку:

Get-help Get-ChildItem -Path cert:\
Get-help Get-ChildItem -Path filesystem:\
Get-help Get-ChildItem -Path $(get-psprovider filesystem)

Iska
18-02-2015, 21:44
Указать параметр Path и какой провайдер интересует:
Get-help Get-ChildItem -Path cert:\ »
Kazun, интересует провайдер FileSystem. Покажите пример его указания.

Kazun
18-02-2015, 21:45
Get-help Get-ChildItem -Path cert:\

SYNTAX
Get-ChildItem [[-Path] <String[]>] [[-Filter] <String>] [-Exclude <String[]>] [-Force] [-Include <String[]>] [-Name
] [-Recurse] [-UseTransaction [<SwitchParameter>]] [<CommonParameters>]

Get-ChildItem [[-Filter] <String>] [-Exclude <String[]>] [-Force] [-Include <String[]>] [-Name] [-Recurse] -Literal
Path <String[]> [-UseTransaction [<SwitchParameter>]] [<CommonParameters>]

Get-ChildItem [-CodeSigningCert] [-DnsName <string>] [-EKU <string>] [-ExpiringInDays <int>] [-SSLServerAuthenticat
ion] [<CommonParameters>]

PS > Get-help Get-ChildItem -Path cert:\ -Parameter CodeSigningCert

-CodeSigningCert [<SwitchParameter>]
Gets only those certificates with code-signing authority. This parameter gets certificates that have "Code Signing
" in their EnhancedKeyUsageList property value.


PS > Get-help Get-ChildItem -Parameter CodeSigningCert
Get-help : No parameter matches criteria CodeSigningCert.
At line:1 char:1
+ Get-help Get-ChildItem -Parameter CodeSigningCert

Так что не соглашусь с данным заявлением.

ЗЫ. Для FileSystem - Get-help Get-ChildItem -Path C:\ -Parameter ReadOnly

Foreigner
18-02-2015, 21:49
что будет перечислено в динамических параметрах, например? »
Да, там все есть.

ЗЫ. Для FileSystem - Get-help Get-ChildItem -Path C:\ -Parameter ReadOnly »

> Get-help Get-ChildItem -Path C:\ -Parameter ReadOnly
Get-help : Нет параметров, отвечающих критериям ReadOnly.
строка:1 знак:1
+ Get-help Get-ChildItem -Path C:\ -Parameter ReadOnly
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (System.Manageme...CommandHelpInfo:ProviderCommandHelpInfo
) [Get-Help], PSArgumentException
+ FullyQualifiedErrorId : NoParmsFound,Microsoft.PowerShell.Commands.GetHelpCommand

Kazun
18-02-2015, 21:55
Для начала не плохо бы озвучить версию PowerShell: The ReadOnly parameter was introduced in Windows PowerShell 3.0.

PS > Get-help Get-ChildItem -Path C:\ -Parameter ReadOnly

-ReadOnly [<SwitchParameter>]
Gets only read-only files and directories (folders).

To get only read-only items, use the ReadOnly parameter, its "ar" alias, or the ReadOnly value of the Attributes pa
rameter. To exclude read-only items, use the Attributes parameter.

Все мои примеры v3 и выше.

Foreigner
18-02-2015, 22:02
Kazun,

> $host.version

Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1

Тот же результат выдает $PSVersionTable.PSVersion

> get-host


Name : ConsoleHost
Version : 4.0
InstanceId : 92980ac2-ee31-4e9a-a070-7bd0a2cc2e08
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : ru-RU
CurrentUICulture : ru-RU
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace




© OSzone.net 2001-2012