2013-12-17 2 views
0

У меня этот скрипт работает, чтобы удалить все файлы, но оставить только выбранные. Как я могу его изменить, поэтому в файле .exe он ловит какое-либо имя файла?PHP Удалить все файлы, кроме следующих

$leave_files = array(''.$filename.'.exe', ''.$filename.'.nfo', ''.$filename.'.sfv'); 
foreach(glob("$foldername/*") as $file) { 
    if(!in_array(basename($file), $leave_files)) { 
      unlink($file); 
     } 

для EXE-файла Я хочу, чтобы захватить любое имя

Благодаря

+0

You ва nt удалить все файлы, кроме того, что указано в массиве * и * не является .exe-файлом? – AbraCadaver

+0

Не жалко, я хочу, чтобы он сохранял $ filename.nfo, $ filename.sfv и ANYNAME.exe – Exoon

+0

ОК, вот что я ответил. – AbraCadaver

ответ

2
$leave_files = array('' . $filename . '.exe', '' . $filename . '.nfo', '' . $filename . '.sfv'); 

foreach (glob("$foldername/*") as $file) { 
    if (!in_array(basename($file), $leave_files)) { 
     if (substr($file, -4) == ".exe") { 
      continue; 
     } else { 
      unlink($file); 
     } 
    } 
} 
+0

Мне не нужен особый.exe больше, просто перечитайте то, что я написал, не имеет никакого смысла. Я просто хочу, чтобы ANYTHING.exe хранился и не удалялся. – Exoon

+1

извините его за ничего. Я забыл удалить «конкретный» из сценария. –

+0

Должно ли (substr ($ file, -4) == ".exe") {be $ filename? Он не работает в настоящее время. – Exoon

0

Вы можете проверить, если последние 4 признаки файла являются «.exe», а затем не удалять их. (Или удалить их, зависит от того, что вы имеете в виду)

если (подстрока ($ имя_файла, -4) == ".exe")

0

Проверьте расширение:

if(!in_array(basename($file), $leave_files) && pathinfo($file, PATHINFO_EXTENSION) != 'exe') { 

Или исключить их в glob():

foreach(array_diff(glob("$foldername/*"), glob("$foldername/*.exe") as $file) { 
+0

Где это будет внутри моего скрипта? – Exoon

+0

Они заменят ваш существующий 'if' или ваш существующий' foreach'. Какой бы ни был смысл для вас. – AbraCadaver

Смежные вопросы