Показать полную графическую версию : [решено] нужно переименовать большую коллекцию MP3 файлов
Kazun, спасибо, ясно. У меня, к сожалению, совершенно одинаково для:
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert:\
Get-Help Get-ChildItem -Path c:\
Версия 2.0.
В PowerShell v2 - командлет Get-Help работает странно, поэтому используют Get-Command:
http://www.nivot.org/blog/post/2010/01/18/PowerShell20AboutDynamicParameters
Kazun, кошмар. Ну, хотя бы так :(.
Ага, прояснения теперь ждут меня.Всем спасибо
Просто пронумеровать? Без названия? Я переименовываю исходя из тегов (с помощью taglib-sharp). Ваш вариант: »
данный вариант применим к другим типам файлов ?или что мешает при смене типа файлов на PDF переименовывать файлы?
Foreigner
06-03-2015, 09:02
IVa_, Ничего не мешает.
Ничего не мешает »
PS C:\Users\TEMP> $dirs = gci "C:\Users\MOC\Desktop\pdf\" -dir -recurse
foreach ($dir in $dirs) {
if ( test-path "$($dir.fullname)\*.pdf" ) {
$files = gci $dir.fullname '*.pdf'
1..$files.count | % { rename-item -lit $files[($_-1)].fullname "$( '{0:d3}' -f $_ ).pdf" }
}}
Get-ChildItem : Не удается найти параметр, соответствующий имени параметра "dir".
строка:1 знак:45
+ $dirs = gci "C:\Users\MOC\Desktop\pdf\" -dir <<<< -recurse
+ CategoryInfo : InvalidArgument: (:) [Get-ChildItem], ParameterBind
ingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Command
s.GetChildItemCommand
Foreigner
06-03-2015, 14:15
IVa_, Значит ваша версия PowerShell ниже 4-й или даже 3-й:
$dirs = gci "C:\Users\MOC\Desktop\pdf\" -recurse | where { $_.psiscontainer }
foreach ($dir in $dirs) {
if ( test-path "$($dir.fullname)\*.pdf" ) {
$files = gci $dir.fullname '*.pdf'
1..$files.count | % { rename-item -lit $files[($_-1)].fullname "$( '{0:d3}' -f $_ ).pdf" }
}}
Вторая версия. До четвертой обновить не получается(
До четвертой обновить не получается( »
Старайтесь. Мне, на XP, понятно — никак. А Вам можно.
Iska, да хватает и, то что есть, только сталкиваешься с непонятными ошибками,а за отсутствием профессиональных знаний в области администрирования, исправить быстро не получается, так что есть смысл обновиться до последней версии.
Последний скрипт работает на не совсем свежей версии.
$dirs = gci "C:\Users\MOC\Desktop\book" -recurse | where { $_.psiscontainer }
foreach ($dir in $dirs) {
if ( test-path "$($dir.fullname)\*.pdf" ) {
$files = gci $dir.fullname '*.pdf'
1..$files.count | % { rename-item -lit $files[($_-1)].fullname "$( '{0:d3}' -f $_ ).pdf" }
}}
Rename-Item : Не удается найти параметр, соответствующий имени параметра "lit".
строка:9 знак:43
+ 1..$files.count | % { rename-item -lit <<<< $files[($_-1)].fullname "$(
'{0:d3}' -f $_ ).pdf" }
+ CategoryInfo : InvalidArgument: (:) [Rename-Item], ParameterBin
dingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Comm
ands.RenameItemCommand
переименовал файлы одной дочерней директории""C:\Users\MOC\Desktop\book\pdf"
", не затронул файлы в директории book "C:\Users\MOC\Desktop\book" что не допустило переименовать файлы.
Постойте, скрипт работает со всеми форматами, вот с изображением не хочет работать /*.jpg ?.
Не подумайте что пудрю мозг, навожу порядок.
Rename-Item : Не удается найти параметр, соответствующий имени параметра "lit". строка:9 знак:43 »
Во второй версии у указанного командлета отсутствует параметр «-LiteralPath».
Foreigner
07-03-2015, 22:40
IVa_, Можно обойтись без rename-item, заменив его на move-item (вроде во второй версии у него есть параметр -literalpath)
На самом деле можно и Rename-Item без -LiteralPath. Он, по факту, мне нужен был только для переименования файлов, содержащих квадратные скобки "[" и "]".
(вроде во второй версии у него есть параметр -literalpath) »
Есть.
Обновления не хочу ставить,вполне достаточно того что имеется. А вот с литературой и справкой дела обстоят совершенно иначе, к моему удивлению вся полезная литература не является бесплатная, что мешает узнать более подробно о всяческих приемах и процессах написания и не забуду упомянуть правила написания.
Не удается индексировать в объект типа System.IO.FileInfo.
$dirs = gci "D:\Iva\электрон.библиотек\PowerShell\Vk.com PowerShell" -recurse | where { $_.psiscontainer }
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" }
}}
Foreigner
08-03-2015, 00:46
IVa_, Запустил в режиме второй версии, действительно ошибка. Исправьте эту строку:
$files = @(gci $dir.fullname '*.jpg')
Дело в том, что если в папке только один jpg-файл, то переменная $files имеет строковой тип (string), а предполагается массив (array).
На счет книг. Вот ссылка на отличный материал: http://powershell.com/cs/blogs/ebookv2/default.aspx
Раньше была доступна в формате PDF, могу скинуть.
На счет книг. » не откажусь.Отличный ресурс.
Foreigner
08-03-2015, 01:26
http://rghost.ru/7LBnHYp6l
Ничего не видно, ссылка не доступна. Если есть возможность передать письмом буду рад:)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC