Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
vladi4ak1
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 6
1

Удаление всех файлов, кроме списка

13.02.2018, 20:01. Просмотров 530. Ответов 11
Метки нет (Все метки)

Всем добра. Столкнулся с след. задачей. Есть огромное количество папок и файлов с разным уровнем вложений (большой бекап хостинга, на котором хостится порядка 20 сайтов).
Так же, есть список файлов, в которых предстоит сделать ряд, практически шаблонных изменений (с этим проблем у меня нет). Соответственно, в остальных файлах этих изменений делать не нужно.
Для этого хочу написать хочу написать батник, который удалит сам все файлы в папке N, КРОМЕ тех, что в списке. На форумах нашел подобное решение, но для папок (удаление всех папок, за исключением списка). Но, увы, даже отредактировать под свои нужды мне не под силу (само дерево папок удалять не требуется, нужно удалить именно файлы).

Может кто поможет?)
Сам батник (тест)
Windows Batch file
1
2
3
4
5
6
7
8
9
set dest=C:\1
cd /d %dest%   
for %%i in (%dest%\*.*) do del /q %%i   
for /f "delims=;"  %%i in ('dir /b /ad') do call:job "%%i" 
exit /b   
:job 
for /f "delims=;" %%k in (C:\list.txt) do  if /I %1=="%%k" GOTO:EOF 
rd /q /s %1 
GOTO:EOF
Список файлов (тест):
Код
New folder;
New folder/New Text Document.txt;
New folder\New Text Document.txt;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2018, 20:01
Ответы с готовыми решениями:

Удаление из папки всех файлов, кроме указанных
Дело вот какое. Попробую обстоятельно объяснить. Есть ПАПКА(корневая)...

Удаление всех файлов, кроме созданных последними 10-ти
Всем привет!Помогите пожалуйста сделать батничек, который будет удалять с папки...

Удаление всех файлов и папок, кроме указанных в значении задаваемой переменной
rem очистка всего кроме папок rem...

Удаление всех файлов в папке кроме созданных первого числа каждого месяца
Помогите создать bat/cmd файл, который бы удалял из определенной папки все...

Удаление всех файлов в папках и под папках, кроме тех в которых в названии есть определенно слово
Всем привет, я так сказать чайник чтоле, я посерфил форум нашел пару похожих...

11
ZoOoO
177 / 173 / 56
Регистрация: 09.02.2016
Сообщений: 878
13.02.2018, 20:39 2
Все файлы выводит которые надо сохранить?
Windows Batch file
1
2
3
4
5
6
@echo off
Setlocal EnableDelayedExpansion
for /f "usebackq delims=" %%a in (`dir /a-d /b /s "%userprofile%\desktop\ad"`) do (
echo %%a|findstr /g:11.txt ||echo %%a 2>nul 1>&2
)
pause
1
vladi4ak1
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 6
13.02.2018, 20:47  [ТС] 3
К сожалению, не совсем работает. Просто отображает все файлы, найденные в папке. Но не удаляет.
0
ZoOoO
177 / 173 / 56
Регистрация: 09.02.2016
Сообщений: 878
13.02.2018, 20:54 4
Объясняю.
Батник должен найти все файлы которые надо оставить.
Батник и файл со списком находятся на рабочем столе.Все ваши папки засовываем в одну папку на рабочем столе и указываем в батнике путь к папке на рабочем столе в которой надо искать файлы.МОжно эту папку назвать ad и тогда путь остается как и в батнике.
Файл 11.txt-это список с файлами которые надо оставить.Вот я и спрашиваю,он все файлы нашел ,которые надо оставить?
0
vladi4ak1
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 6
13.02.2018, 20:59  [ТС] 5
Ок. Что я сделал: создал батник на раб. столе, скопировав содержимое. Закинул текстовый документ 11.txt туда же. В текстовом документе указал абсолютный путь к одному из файлов: "C:\Users\vladi\OneDrive\Desktop\New folder\New folder - Copy (2)\New folder - Copy\New Text Document.txt;"

Отобразило ничего (press any key to continue).
До этого отображало просто все файлы во всех подпапках (тогда батник лежал в другой папке, но пути я указал)

UPD:
Насколько я понял из уже измененного поста, проблема в том, что пути в файле нужно писать относительные к папке ad.
Сейчас попробую. Отпишу.)
0
ZoOoO
177 / 173 / 56
Регистрация: 09.02.2016
Сообщений: 878
13.02.2018, 21:05 6
повторю еще раз.
На рабочем столе находятся помимо всяких ярлыков три вещи:
1.батник
2.файл 11.txt
3.папка в которой находятся папки и файлы среди которых мы ищем .
Это "%userprofile%\desktop\ad" путь к папке,в которой находятся ваши папки с файлами ,среди которых мы ищем не нужные.
в файле 11.txt находятся названия файлов которые надо оставить.Никаких путей.А только названия файлов,которые надо оставить.
например:
1.txt
1 2.docx
4.txt
0
vladi4ak1
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 6
13.02.2018, 21:10  [ТС] 7
Итак. Для эксперемента создал на рабочем столе батник, скопировав содержимое.
Создал папке ad на рабочем столе.
Создал два текстовых файла в папке, путь к одному из которых ввел в файл 11.тхт (пробовал и абсолютный, и относительный).
Отображает "file not found".
После чего, попытался вместо "%userprofile%\desktop\ad" указать прямой путь "C:\Users\vladi\OneDrive\Desktop\ad".
После чего, запустив батник получил просто "press any key".

Еще раз, спасибо.))

UPD:
Я, наверное, изначально, тоже не правильно выразился. Мне нужно с указанными путями файл 11.тхт делать, поскольку, среди всех этих файлов, например, будет название файла "index.php". Которых по всем папкам будет много, а мне нужно оставить только определенные из них в той же папке. Как-то так.)
0
ZoOoO
177 / 173 / 56
Регистрация: 09.02.2016
Сообщений: 878
13.02.2018, 21:13 8
Ну тогда пишите пути.Но без кавычек.Притом полный путь будет начиная с диска ,раюбочего стола и папки в которой лежат папки.
0
vladi4ak1
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 6
13.02.2018, 21:21  [ТС] 9
Без путей тоже пробовал, когда использовал относительные пути (в корень папки ad закинул файлы, поэтому относительный путь выглядел, как просто название файла =) )

Добавлено через 3 минуты
Та же беда. "Press any key" и все.)

Добавлено через 2 минуты
Кстати, если закинуть файл 11.тхт в папку ad - то батник отображает вот что:
"C:\Users\vladi\OneDrive\Desktop\ad\11.txt
Press any key to..."
0
ZoOoO
177 / 173 / 56
Регистрация: 09.02.2016
Сообщений: 878
13.02.2018, 22:53 10
Тогда так
Windows Batch file
1
2
3
4
5
6
7
@echo off
Setlocal EnableDelayedExpansion
for /f "usebackq delims=" %%a in (`dir /a-d /b /s "%userprofile%\desktop\ad"`) do (
 
echo %%a|findstr /i /l /g:111.txt ||echo del "%%a" 2>nul 1>&2
)
pause
Но снова есть НО.Если у вас есть русские символы в путях,то файл 111.txt надо сохранить в 866 кодировке иначе работать не будет.У меня вот винда российская и блокнот сохраняет в русской кодировке.Следовательно когда будет происходить сравнение.То смд будет сравнивать все это в 866 кодировке и 1251(блокнотовская), в 866, превратится(превратятся русские символы) в кракозябры и сравнение будет неверным.Отсюда вывод.Блокнот это зло.Блокнот не умеет сохранять в 866 кодировке.
1
vladi4ak1
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 6
14.02.2018, 13:52  [ТС] 11
Спасибо) Позже проверю и отпишусь.) Нет, винда у меня вообще немецкая.) 10.
0
ZoOoO
177 / 173 / 56
Регистрация: 09.02.2016
Сообщений: 878
14.02.2018, 13:55 12
Он должен вывести файлы которые надо сохранить.Если он отработал правильно.То стираем вот это
Windows Batch file
1
echo %%a|findstr /i /l /g:111.txt ||echo del "%%a" 2>nul 1>&2
Делаем копию папки на всякий случай и пишем эту строку.Должен удалять начать.
Windows Batch file
1
echo %%a|findstr /i /l /g:111.txt 2>nul 1>&2||del "%%a"
0
14.02.2018, 13:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2018, 13:55

Удаление в заданных каталогах всех файлов и каталогов, указанных в виде списка, занесенного в текстовый файл
Создайте командный файл, который удаляет все файлы и каталоги, в заданных...

Удаление в заданных каталогах всех файлов и каталогов, указанных в виде списка, занесенного в текстовый файл
Создайте командный файл, который удаляет все файлы и каталоги, в заданных...

Очистка рабочего стола от всех файлов, кроме файлов с определёнными расширениями
Добрый день. Помогите написать скрипт для очистки определенных папок (Рабочий...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru