Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Help!!! Не могу разобратся с циклом! 
:(
    Опции темы
Slauta
  Дата 19.5.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 14.5.2009
Где: Солигорск

Репутация: нет
Всего: нет



Вообщем вот код! Нано что бы эта прога переименовывала все картинки DSC064**.jpg в пример:
32-33.jpg
34-35.jpg
36-37.jpg
38-39.jpg....
Код


for ($i = 1; $i < 100; ++$i)
{
#$o = $i+1;
$p=$i;
$w=DSC064.$p;
$l= '-';
$u=$i-3;

$n=$i-2;
$e=$u.$l.$n;
rename "$w.jpg", "$e.jpg";

print $i, " ";
}
print "\nPOSLE i = $i\n";


удаётся ток первые две строчки а потом всё.... Не идёт...
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
shamber
Дата 19.5.2009, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



а Нано причем?

Цитата(Slauta @  19.5.2009,  22:43 Найти цитируемый пост)
Не идёт... 

как определили?

Цитата(Slauta @  19.5.2009,  22:43 Найти цитируемый пост)
$e=$u.$l.$n;

а это что за ужас? 
может проще 
Код

$e=$u.'-'.$n;

Ужос а не код
что вы им хотели сделать? Наплодили кучу ненужных переменных. Зачем?

Это сообщение отредактировал(а) shamber - 19.5.2009, 23:05
PM MAIL Jabber   Вверх
Slauta
Дата 20.5.2009, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 14.5.2009
Где: Солигорск

Репутация: нет
Всего: нет



Ну лан код я изменил!
После выполнения скрипта переименовывает так:
32-33.jpg
34-35.jpg
35-36.jpg
36-37.....

а надо так:
32-33.jpg
34-35.jpg
36-37.jpg
38-39.jpg....

вот не хочет далше по нормальному переименовывать. Объясните где бага!
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
arto
Дата 20.5.2009, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



perl -e '$n = 32; foreach (@ARGV) { rename $_,sprintf "%d-%d.jpg",$n++,$n++ }' *.jpg 

PM MAIL ICQ   Вверх
shamber
Дата 20.5.2009, 09:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Цитата(Slauta @  20.5.2009,  07:47 Найти цитируемый пост)
Ну лан код я изменил!

ну лан я тожа 
PM MAIL Jabber   Вверх
amg
Дата 20.5.2009, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



arto в своем репертуаре smile . Хотя для такой задачки самое то.

Еще вариант:
Код
for ($i=1; $i < 100; $i++) {
  $file = "DSC064$i.jpg";
  next if ! -f $file;
  rename $file, 2*$i-1 . '-' . 2*$i . 'jpg' or warn "Can't rename $file: $!\n";
}

PM MAIL   Вверх
shamber
Дата 20.5.2009, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



мне кажется что фотоаппараты, ну или камеры как правило создают файлы типа
DSC06401.jpg а не DSC0641.jpg
$file = "DSC064$i.jpg";
я б еще добавил.
Код

if ($i<10){
$file = "DSC0640$i.jpg";
next if ! -f $file;
  rename $file, '0'.2*$i-1 . '-' .'0'. 2*$i . 'jpg' or warn "Can't rename $file: $!\n";
}


хотя такого условия и не было smile
PM MAIL Jabber   Вверх
Slauta
  Дата 20.5.2009, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 14.5.2009
Где: Солигорск

Репутация: нет
Всего: нет



Сё пасиб за помощь shamber, amg, arto! Будем работать дальше! smile 
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
amg
Дата 20.5.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Для Windows однострочник arto должен выглядеть как то так:
Код
perl -e "$n = 32; foreach (glob \"@ARGV\") {rename $_,sprintf '%d-%d.jpg',$n++,$n++}" DSC064*.jpg


Это сообщение отредактировал(а) amg - 20.5.2009, 15:28
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.