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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> новое название файла, новое название файла 
:(
    Опции темы
viktorijakup
Дата 9.11.2009, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет !

и извините за мой простой  РУССКИЙ язык

у меня есть скрипт который копирует файл в нужное место с нужном названием


а теперь нужно чтобы файл принял  часть  названия из другово файла названия


например в директории есть 

340_2009_5208_JobSheet_200.xml 

мое.pdf 
моеa1.pdf
.
.
.
моеan.doc



мне нужно чтобы мое.pdf...моеan.doc
файлы назывались  

340_2009_5208_MOESM1_ESM.pdf
340_2009_5208_MOESM2_ESM.pdf
.
.
.
340_2009_5208_MOESMn_ESM.doc





Код

@rem = '--*-Perl-*--
@echo off
if "%OS%" == "Windows_NT" goto WinNT
perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
:WinNT
perl -x -S %0 %*
if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
if %errorlevel% == 9009 echo You do not have Perl in your PATH.
if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
goto endofperl
@rem ';
#!/usr/bin/perl
use warnings;
use strict;
use File::Path;
use Cwd;
use File::Copy;
use File::Spec::Functions;
#hardcoded 
my $FP = 'D:\conv';
my $TP = 'D:\sgml_db';
my $NAME = 'mmc1';
my ($from_file, $to_file) = ($ARGV[0], $ARGV[0]);
my $cwd = `cd`;
chomp $cwd;
my ($from_dir, $to_dir) = ($cwd, $cwd);
#rename file part
$to_file =~ s/.*\.(.+)/$NAME.$1/;
#rename dir part
$to_dir =~ s/^\Q$FP\E/$TP/;
mkpath($to_dir);
copy(catfile($from_dir, $from_file), catfile($to_dir, $to_file)) 
    or die "can't copy file";
exit 0;

__END__
:endofperl




Спасибо  smile 
PM MAIL   Вверх
sir_nuf_nuf
Дата 10.11.2009, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



попробуйте так:
Код

my $some_file = (<$to_dir>)[0];
my ($prefix) = $some_file =~ m/(\d+_\d+_\d+)[^\\]*$/;
$to_file =~ s/^(\w+)(\d*)\.(\w+)$/"$prefix_" . uc($1) . ($2 || 0) . "_ESM.$3"/e;



--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
viktorijakup
Дата 17.11.2009, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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




Всем привет !


а теперь у меня ошипка:

"Global symbol $prefix" requires explicit package name".

Пaмогите !!!!

 

Код

@rem = '--*-Perl-*--
@echo off
if "%OS%" == "Windows_NT" goto WinNT
perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
:WinNT
perl -x -S %0 %*
if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
if %errorlevel% == 9009 echo You do not have Perl in your PATH.
if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
goto endofperl
@rem ';
#!/usr/bin/perl
use warnings;
use strict;
use File::Path;
use Cwd;
use File::Copy;
use File::Spec::Functions;
#hardcoded 
my $FP = 'D:\conv';
my $TP = 'D:\sgml_db';
#my $NAME = 'mmc1';
my ($from_file, $to_file) = ($ARGV[0], $ARGV[0]);
my $cwd = `cd`;
chomp $cwd;
my ($from_dir, $to_dir) = ($cwd, $cwd);
#rename file part
#$to_file =~ s/.*\.(.+)/$NAME.$1/;
my $some_file = (<$to_dir>)[0];
my ($prefix) = $some_file =~ m/(\d+_\d+_\d+)[^\\]*$/;
$to_file =~ s/^(\w+)(\d*)\.(\w+)$/"$prefix_" . uc($1) . ($2 || 0) . "_ESM.$3"/e;
#rename dir part
$to_dir =~ s/^\Q$FP\E/$TP/;
mkpath($to_dir);
copy(catfile($from_dir, $from_file), catfile($to_dir, $to_file)) 
    or die "can't copy file";
exit 0;

__END__
:endofperl

PM MAIL   Вверх
Bulat
Дата 17.11.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


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

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



Цитата(viktorijakup @  17.11.2009,  17:12 Найти цитируемый пост)
"Global symbol $prefix" requires explicit package name".


Или все же $prefix_

Очевидно нужно 
Код

$to_file =~ s/^(\w+)(\d*)\.(\w+)$/"$prefix"."_" . uc($1) . ($2 || 0) . "_ESM.$3"/e;




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


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

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


 




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


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

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