имхо сама идея лютая - как топором яйца брить.
Лучше скопировать нужные файлы - и если успешно, удалить руками. Посмотри на экранирование \ в своем файле
я не тестил, но думаю что будет работать
Код:
set_time_limit(0);
$root_dir = "D:\\folder1\\";
$new_dir = "D:\\folder2\\";
$list = file("list.txt", FILE_INGORE_NEW_LINES);
foreach($list as $single_file) {
preg_match("/(.*?)\//", $single_file, $out1);
if(!is_dir($new_dir.$out[1])) {
mkdir($new_dir.$out[1], 0, true);
copy($root_dir.$single_file, $new_dir.$single_file);
}
}
// если скопировалось - потом удалить $root_dir