Как скопировать один файл и папку в кучу папок - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB93.4409
BTC/USD63190.5024
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 09.08.2011, 12:47   #1
Natud
Senior Member
 
Аватар для Natud
 
Регистрация: 26.10.2010
Сообщений: 114
Бабло: $27852
По умолчанию Как скопировать один файл и папку в кучу папок

Как можно скопировать несколько файлов и папку в кучу других папок?
Чтобы на автомате.

Плиз, виндовые решения не предлагать. Т.е. php, perl, bash пойдет.

Natud вне форума  
Старый 09.08.2011, 13:10   #2
Drg
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 4,096
Бабло: $611825
По умолчанию

Цитата:
Сообщение от Natud Посмотреть сообщение
Как можно скопировать несколько файлов и папку в кучу других папок?
Чтобы на автомате.
не понятен вопрос, пример давай. Откуда еще понятно, а вот в кучу других папок это абстракция
Drg вне форума  
Старый 09.08.2011, 13:17   #3
Natud
Senior Member
 
Аватар для Natud
 
Регистрация: 26.10.2010
Сообщений: 114
Бабло: $27852
ТС -->
автор темы ТС По умолчанию

ну вот есть список директорий, они все находятся внутри одной конкретной.
Имена папок рандомные, но привести в один вид не проблема. Внутри этих папок уже есть файлы, но они не пересекаются с добавляемыми.
Список добавляемых - константа, т.е. одно и то же для всех.

Пример.
Есть папки с именами
1
2
3

Добаdляем папку add и файл added.htm
В результате получаем:
1/add
2/add
3/add
И в папках этих появляется added.htm

Как то так. Писатель ТЗ из меня фиговый
Natud вне форума  
Старый 09.08.2011, 13:56   #4
dim7
Senior Member
 
Аватар для dim7
 
Регистрация: 22.08.2008
Сообщений: 927
Бабло: $173840
По умолчанию

ну как-нить так
ls > list
делаем замену приводим к виду
ln -s /dir/add /dir/list/add
сохраняем list как list.sh, chmod 755 list.sh ; ./list.sh
но это не копирование, это симлинки на случай если конечные файлы не будут отличаться, и меняются они тоже разом в одном файле.
для копирования cp вместо ln -s
__________________
LoadedCash - вечные ребилы -|- Налят Сюда
dim7 вне форума  
Старый 09.08.2011, 13:59   #5
Natud
Senior Member
 
Аватар для Natud
 
Регистрация: 26.10.2010
Сообщений: 114
Бабло: $27852
ТС -->
автор темы ТС По умолчанию

Не, надо чтобы файлы и папки именно скопировались, т.к. потом они отправятся на дальнейшую переработку
Natud вне форума  
Старый 09.08.2011, 14:01   #6
res1dent
Везучий ВМ
 
Аватар для res1dent
 
Регистрация: 21.08.2009
Сообщений: 1,495
Бабло: $239825
Отправить сообщение для res1dent с помощью Telegram
По умолчанию

Цитата:
<?PHP
define('nl', "\n");
define('brnl', "<br>\n");
//$sourcedir = getcwd()."\\source"; // ОТКУДА надо скопировать
//$destdir = getcwd()."\\basd"; // КУДА надо скопировать

GetForm();

if (!@$_POST['source'] || !@$_POST['dest']) {
exit;
}
$sourcedir = @$_POST['source'];
$destdir = @$_POST['dest'];
setcookie('source', $sourcedir, time()+60*60*24*7, "/");
setcookie('dest', $destdir, time()+60*60*24*7, "/");
//$_SESSION['source'] = $sourcedir;
//$_SESSION['dest'] = $destdir;

$rp = realpath($sourcedir);
$is_dir = is_dir($sourcedir);
if ($rp && $is_dir) {
echo "Start work...".brnl;
$tmp = glob($destdir."\\*");
foreach($tmp as $n => $dir) {
if (!is_dir($dir)) { continue; }
$name = GenNick(rand(4, 8), false);
$fullname = $destdir."\\".$name;
//$fullname = $dir;
do {
if (rename($dir, $fullname)) { $exit = true; } else { $exit = false; usleep(10000); }
} while(!$exit);
$num = dircopy($sourcedir, $fullname, false);
echo date("H:i:s")." - ".($n+1).": ".$num." files copied to \"".$fullname."\"".brnl;
flush_buffers();
}
echo "Finish work.".brnl;
} else {
echo "Error in source dir";
}

/*
function dircopy($srcdir, $dstdir, $verbose = false) {
$num = 0;
if(!is_dir($dstdir)) mkdir($dstdir);
if($curdir = opendir($srcdir)) {
while($file = readdir($curdir)) {
if($file != '.' && $file != '..') {
$srcfile = $srcdir . "\\" . $file;
$dstfile = $dstdir . "\\" . $file;
if(is_file($srcfile)) {
if(is_file($dstfile)) {
$ow = filemtime($srcfile) - filemtime($dstfile);
} else {
$ow = 1;
}
if($ow > 0) {
if($verbose) echo "Copy '".$srcfile."' &rarr; '".$dstfile."'...";
if(copy($srcfile, $dstfile)) {
touch($dstfile, filemtime($srcfile)); $num++;
if($verbose) echo "OK".brnl;
} else echo "Error: File '$srcfile' could not be copied!".brnl;
}
} else if(is_dir($srcfile)) {
$num += dircopy($srcfile, $dstfile, $verbose);
}
}
}
closedir($curdir);
}
return $num;
}
*/

function GetForm() {
//@$_SESSION['source'] ? $source = $_SESSION['source'] : $source = getcwd();
//@$_SESSION['dest'] ? $dest = $_SESSION['dest'] : $dest = getcwd();
@$_COOKIE['source'] ? $source = $_COOKIE['source'] : $source = getcwd()."\source";
@$_COOKIE['dest'] ? $dest = $_COOKIE['dest'] : $dest = getcwd();
echo "<form action='?' method='post'>".nl;
echo "<h3>Copy FROM &rarr; TO:</h3>";
echo "<input type='text' name='source' value='".$source."' size='50'>".nl;
echo "&rarr; <input type='text' name='dest' value='".$dest."' size='50'>".nl;
echo "<input type='submit' value='go'>".brnl.brnl;
echo "<b>* without slash at the end of path</b>";
echo "</form>".nl;
}

function dircopy($srcdir, $dstdir, $verbose = false) {
$num = 0;
if(!is_dir($dstdir)) mkdir($dstdir);
$all_dest_dirs = glob($dstdir."\\*", GLOB_ONLYDIR);
array_unshift($all_dest_dirs, $dstdir);
foreach($all_dest_dirs as $n => $dstdir) {
//echo $dstdir.brnl;
// ========================================= //
if($curdir = opendir($srcdir)) {
while($file = readdir($curdir)) {
if($file != '.' && $file != '..') {
$srcfile = $srcdir . "\\" . $file;
$dstfile = $dstdir . "\\" . $file;
if(is_file($srcfile)) {
if(is_file($dstfile)) {
$ow = filemtime($srcfile) - filemtime($dstfile);
} else {
$ow = 1;
}
if($ow > 0) {
if($verbose) echo "Copy '".$srcfile."' &rarr; '".$dstfile."'...";
if(copy($srcfile, $dstfile)) {
touch($dstfile, filemtime($srcfile)); $num++;
if($verbose) echo "OK".brnl;
} else echo "Error: File '$srcfile' could not be copied!".brnl;
}
} else if(is_dir($srcfile)) {
$num += dircopy($srcfile, $dstfile, $verbose);
}
}
}
closedir($curdir);
}
// ========================================= //
}
return $num;
}

function GenNick($size = 0, $use_digits = true){
$char = 'abcdefghijklmnopqrstuvwxyz';
if ($use_digits) { $char .= '1234567890'; }
$kol = strlen($char);
$str = "";
while($size--) {
$str .= $char[rand(0, ($kol-1))];
}
return $str;
}

function flush_buffers() {
@ob_end_flush();
@ob_flush();
@flush();
@ob_start();
}


?>

должен будеш. переименование папок убери если надо
__________________
Не зная ни сна и ни отдыха, при лунном и солнечном свете, легко и просто качаю бабло в интернете
res1dent вне форума  
Старый 09.08.2011, 14:04   #7
dim7
Senior Member
 
Аватар для dim7
 
Регистрация: 22.08.2008
Сообщений: 927
Бабло: $173840
По умолчанию

Цитата:
Сообщение от Natud Посмотреть сообщение
Не, надо чтобы файлы и папки именно скопировались, т.к. потом они отправятся на дальнейшую переработку
для копирования cp вместо ln -s
__________________
LoadedCash - вечные ребилы -|- Налят Сюда
dim7 вне форума  
Старый 09.08.2011, 14:53   #8
Natud
Senior Member
 
Аватар для Natud
 
Регистрация: 26.10.2010
Сообщений: 114
Бабло: $27852
ТС -->
автор темы ТС По умолчанию

res1dent, чето не добавляет

Пишет
Цитата:
Start work...
Finish work.
Должен буду 100 пудов
Natud вне форума  
Старый 09.08.2011, 15:13   #9
res1dent
Везучий ВМ
 
Аватар для res1dent
 
Регистрация: 21.08.2009
Сообщений: 1,495
Бабло: $239825
Отправить сообщение для res1dent с помощью Telegram
По умолчанию

там все чо хош добавляет
даже папку с кучей файлов
хз чо у тебя не так
__________________
Не зная ни сна и ни отдыха, при лунном и солнечном свете, легко и просто качаю бабло в интернете
res1dent вне форума  
Старый 09.08.2011, 15:18   #10
Natud
Senior Member
 
Аватар для Natud
 
Регистрация: 26.10.2010
Сообщений: 114
Бабло: $27852
ТС -->
автор темы ТС По умолчанию

res1dent, ок, наверное я что-то не так делаю. Буду дальше пробовать.
Natud вне форума