Войти

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


pzh2393
14-01-2014, 11:13
Добрый день! С "Старым" Новым Годом!

Помогите, пожайлуста, с переименованием группы файлов где в имени необходимо оставить все присутствующие цифры и символы (точка, тире, подчеркивание), а из букв оставить только две первые встречающиеся.

Пы.Сы. И желательно какую-нибудь проверку чтобы не было повторов.

Iska
14-01-2014, 13:30
И желательно какую-нибудь проверку чтобы не было повторов. »
И желательно какое-нибудь описание, что предпринимать в этом случае.

pzh2393
14-01-2014, 16:39
И желательно какое-нибудь описание, что предпринимать в этом случае. »
думал над этим... наверное добавлять третью букву. Если же вдруг каким чудом и в этом случае совпадет отменить переименование или добавить четвертую - что проще реализовать.

Foreigner
14-01-2014, 21:12
pzh2393, На PowerShell устроит?


function rename ( $old, $e ) {

0..( $old.length - 1 ) | % {

if ( $old[$_] -match '[a-zA-Z]' ) {

$cnt++
if ( $cnt -le 2 ) { $new += $old[$_] }

}

else { $new += $old[$_] }

}

if ( $old -ne $new ) {

while ( test-path "$( $new )$( $e )" ) { $new += [char] ( get-random -min 65 -max 90 ) }

}

ren -literal "$( $old )$( $e )" "$( $new )$( $e )"

}

gci | ? { ! $_.psiscontainer } | % { rename $_.basename $_.extension }

Iska
14-01-2014, 21:42
Foreigner, некорректно отрабатывает на односимвольных именах — добавляет к ним ещё один символ.

Foreigner
14-01-2014, 21:49
Iska, Спасибо, исправил

Iska
14-01-2014, 22:01
Foreigner, ошибки времени исполнения на таком:
1.txt
1.zip
0001.cmd
114-2.rar
AutoHotkey_L_Install.exe
Destination.txt
наборе.

Update: Понял, наверное, просто в 2.0 нет ещё параметра «-Literal» у «Rename-Item».

Foreigner
14-01-2014, 22:15
Цитата Iska: Понял, наверное, просто в 2.0 нет ещё параметра «-Literal» у «Rename-Item».
Вероятно так, но кажется -literalpath есть у move-item, можно попробовать. Если в именах нет [квадратных скобок], то можно и без этого параметра.

pzh2393
15-01-2014, 12:18
На PowerShell устроит? »
Спасибо, только подскажите пожалуйста, а что в системе должно быть установлено чтобы работал скрипт?
Гугл как-то на этот вопрос отвечает, что все должно и так работать, а вот у меня не работает.

Iska
15-01-2014, 13:45
Должен быть установлен Powershell, и разрешено исполнение неподписанных локальных скриптов.

pzh2393
15-01-2014, 15:41
простите за детские вопросы, но с PowerShell имею дело первый раз...
запустить вроде удалось, но появляется только какая-то красная надпись (что написано уловить не смог) и собственно переименования не происходит.

Iska
15-01-2014, 16:30
что написано уловить не смог »
Запустите отдельно PowerShell, затем уже в нём запускайте скрипт.

pzh2393
15-01-2014, 16:46
Запустите отдельно PowerShell, затем уже в нём запускайте скрипт. »
Пичет, что:
Rename-Item : A parameter cannot be found that matches parameter name 'literal'.
At D:\teMp\testPS\test.ps1:22 char:17
+ ren -literal <<<< "$( $old )$( $e )" "$( $new )$( $e )"
+ CategoryInfo : InvalidArgument: (:) [Rename-Item], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.RenameItemCommand

Может можно всетаки такое же реализовать средствами CMD?

Iska
15-01-2014, 16:53
pzh2393, похоже, у Вас также вторая версия PowerShell, так? ОС у Вас какая?

pzh2393
15-01-2014, 17:02
похоже, у Вас также вторая версия PowerShell, так? ОС у Вас какая? »
Да, скачал и поставил вторую. А какую надо?
Работаю на 32-х битной Windows XP.

Foreigner
15-01-2014, 17:23
pzh2393,
Работаю на 32-х битной Windows XP
Вместо ren пропишите move-item или уберите -literal ( при условии, что в названиях нет квадратных скобок )

pzh2393
15-01-2014, 17:35
Спасибо!
Квадратных скобок нет.
А как ограничить выполнение по расширению? а то скрипт сейчас дополнительно переименовывает и "сам себя".

Foreigner
15-01-2014, 17:39
pzh2393, Подставить нужную маску:

gci *.txt, *.doc, *.jpg | ...

Iska
15-01-2014, 18:05
Не лучше ли будет «-Exclude»?

Foreigner
15-01-2014, 18:13
Iska, Тоже верно, если не надо выбирать отдельные расширения




© OSzone.net 2001-2012