ЕленаР Опубликовано 16 января, 2006 Жалоба Поделиться Опубликовано 16 января, 2006 Есть директория, в неё сыпятся файлы, которые генерируются прогой, скрипт на PERL-у должен разбирать их по папочкам в соответствии с датой создания файла. Папки должны формироваться тоже этим скриптом. Можно такое сотворить? Ссылка на комментарий Поделиться на другие сайты Поделиться
Q-Q Опубликовано 16 января, 2006 Жалоба Поделиться Опубликовано 16 января, 2006 ЕленаР: Вам - в Веб-строительство. Ссылка на комментарий Поделиться на другие сайты Поделиться
ЕленаР Опубликовано 18 января, 2006 Автор Жалоба Поделиться Опубликовано 18 января, 2006 perldoc -f opendir perldoc -f closedir perldoc -f stat perldoc -f sort perldoc -f mkdir что вы думаете по этому поводу? Ссылка на комментарий Поделиться на другие сайты Поделиться
roman kovrigin Опубликовано 18 января, 2006 Жалоба Поделиться Опубликовано 18 января, 2006 перлом можно почти все. вот пример скрипта который раскладывает по папочкам txt файлы. по номерам месяца делается папка с буквеным названием, для удобства. #! c:\perl\bin\perl -wuse strict;use File::Copy;my $sourcepath="c:\\unsort1\\"; #где ищемmy $destpath="c:\\sort1\\"; #куда складываемmy @mounth=('январь','февраль','март','апрель','май','июнь','июль','авгусь','сентябрь','октябрь','ноябрь','декабрь');#месяцы, если требуется удобное раскладываниеsub movetxt {my $pathname=$_[0];opendir (SDIR,$pathname) or die "Can`t open $sourcepath\n";my @sdirlist=readdir(SDIR);close(SDIR);foreach (@sdirlist) { #print "\>$pathname$_\\\n"; my $file=$_; if ((-d "$pathname$file")and( $_ !~ /^\./ )) {print "\>$pathname$file\\\n";movewav("$pathname$file\\")} elsif ($file=~m/^.*?\.txt$/) { print "$file\n"; my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($pathname.$file); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($ctime); $year=$year+1900; $mon=$mon+1; if (length($mday)<2){$mday='0'.$mday}; if (-e "$destpath\\$year\\$mounth[$mon]\\$mday") {} else {mkdir("$destpath\\$year\\");mkdir("$destpath\\$year\\$mounth[$mon]\\");mkdir("$destpath\\$year\\$mounth[$mon]\\$mday");}; move("$pathname$file","$destpath$year\\$mounth[$mon]\\$mday\\$file") or die "Copy failed: $!"; }; };};movetxt($sourcepath); если уточните какие файлы вам надо раскладывать - поправлю. $mon=$mon+1; из кода надо конечно убрать, иначе название месяцев съезжает на 1, из за особенностей нумерации элементов массива... Ссылка на комментарий Поделиться на другие сайты Поделиться
ЕленаР Опубликовано 23 января, 2006 Автор Жалоба Поделиться Опубликовано 23 января, 2006 спасибо откликнувшимся. а как вам это решение? # !/usr/bin/perl use strict; use File::stat; my $dir = "C:\test"; chdir($dir); foreach my $filename (glob("*")) { if (-f $filename) { my $stat_handle = stat($filename); my $mtime = $stat_handle->mtime; my @time = localtime($mtime); my $date = ($time[3].(1 + $time[4] < 10 ? "0".(1 + $time[4]) : 1+$time[4]).($time[5] < 100 ? $time[5] : $time[5] > 110 ? $time[5] - 100 : "0".($time[5] - 100) )); mkdir($date); rename($filename, $date."/".$filename) } } Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти