Показать полную графическую версию : [решено] нужно переименовать большую коллекцию MP3 файлов
Столкнулся с проблемой понимания скрипта, Ситуация выглядит следующим образом, нужно переименовать большую коллекцию MP3 файлов.Вместо названия пронумеровать каждый файл в папке.Нашел скрип, и не могу понять что нужно делать.Помогите разобраться.
Хотя в нем все подробно разжевано все равно возникают трудности.
Вместо названия пронумеровать каждый файл в папке.Нашел скрип, и не могу понять что нужно делать. »
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 (он выводит предполагаемый результат)
Да названия не к чему, перебрал, лучшие треки.Хотя и с название не помешает заморочек больше.
Get-ChildItem : Не удается найти параметр, соответствующий имени параметра "dir
".
строка:1 знак:28
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
у 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
Foreigner, перефразирую вопрос: каким именно образом, по Get-Help или иначе (но локально), можно выяснить параметры командлета, специфичные для конкретного провайдера? Ибо контекст-то есть, как я понимаю, но как выяснить указанные детали?!
Foreigner
18-02-2015, 21:22
Iska, Наверное никак... Сам случайно натолкнулся в чьем-то скрипте на параметр -directory, ну и пошел в яндекс.
Я пытался так (но не знаю правильно ли вообще):
help get-childitem -functionality 'filesystem'
Лезет в сеть и ничего не находит
Убрал ключ -lit и все пошло нормально, только это с ключом -whatif.В реальности применю скрипт когда все соберу, подкинули еще файликов, нужно все это перебрать.Я так понимаю в каждой папке файлы будут переименованы с индексом 001-009.Если да то это почти то что нужно.С найденного мною скрипта добавлю еще создание плейлиста.
Версия PS была обновлена только я не могу понять как эти обновления вступают в силу.А так наверное V.1. а нет проверил 2.0
Iska, Программу тоже загружу посмотрю, и оценю её в работе.Русский в настройках имеется?
Foreigner, -lit что это за командлет ?
Без него все идет, без потерь.Ничего я не произойдет.С моими mp3шками.
Указать параметр Path и какой провайдер интересует:
Get-help Get-ChildItem -Path cert:\
Foreigner, если попробовать тупо:
Get-Help FileSystem
что будет перечислено в динамических параметрах, например?
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)
Указать параметр Path и какой провайдер интересует:
Get-help Get-ChildItem -Path cert:\ »
Kazun, интересует провайдер FileSystem. Покажите пример его указания.
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
Для начала не плохо бы озвучить версию 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.