Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление всех файлов кроме указанных, с содержанием указанных букв в названии

Ответить
Настройки темы
CMD/BAT - [решено] Удаление всех файлов кроме указанных, с содержанием указанных букв в названии

Аватара для mrG0bliN

Пользователь


Сообщения: 90
Благодарности: 2

Профиль | Отправить PM | Цитировать


кучу тем было знаю но почему то непоулчается удилить по особенному

брал шаблон такой:

rem =========================================
@Echo Off

Set Otkuda=Steam

Set NoDelete=%~nx0.NoDelete
@Echo %0 >%NoDelete%

@Echo \*ssfn* >>%NoDelete%
@Echo \*.blob >>%NoDelete%


FOR /F "usebackq delims=" %%f IN (`xcopy "%Otkuda%\*.*" C:\ /L /S /EXCLUDE:%NoDelete%`) DO Del "%%f"

Del %NoDelete%

объясните как записать что бы выделенные файлы жирным не удалялись
мб вместо пушинки нужно что то другое?
Если вписать просто steam.exe то все в порядке с этим файлом, в другом случае не получается

Отправлено: 10:42, 15-04-2016

 

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Подстановочные знаки в файлах для /EXCLUDE не работают.
Могу предложить свои изменения в Ваш код
Идея изменений: все имена файлов, найденных Dir и соответствующих маске, записываются в файл для /EXCLUDE.
Код: Выделить весь код
@Echo off

Set "Otkuda=Steam"
Set "NoDelete=%~nx0.NoDelete"
Set "DPath=%~dp0"

@Echo %0 >%NoDelete%

Set "Mask1=*ssfn*" 
Set "Mask2=*.blob"

for /f "usebackq Delims=" %%f in (`dir "%DPath%%Otkuda%\%Mask1%" "%DPath%%Otkuda%\%Mask2%" /b /s /A:-d 2^>nul`) Do Echo %%f>>"%NoDelete%"

FOR /F "usebackq delims=" %%f IN (`xcopy "%DPath%%Otkuda%\*.*" C:\ /L /S /EXCLUDE:%NoDelete%`) DO Del "%%f" 2>nul

Del %NoDelete%

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 15-04-2016 в 13:00.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:19, 15-04-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для mrG0bliN

Пользователь


Сообщения: 90
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата megaloman:
for /f "usebackq Delims=" %%f in (`dir "%DPath%%Otkuda%\%Mask1%" "%Otkuda%\%Mask2%" /b /s /A:-d 2^>nul`) Do Echo %%f>>"%NoDelete%"
FOR /F "usebackq delims=" %%f IN (`xcopy "%DPath%%Otkuda%\*.*" C:\ /L /S /EXCLUDE:%NoDelete%`) DO Del "%%f" 2>nul »
а можно расписать по подробнее что бы я понимал что происходит? пожалуйста ^_^

Отправлено: 12:27, 15-04-2016 | #3


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


что происходит? - это практически полностью Ваш код, попытаюсь его пояснить.
Подпапка Steam, похоже, расположена в одной папке с батником.
В команде Dir под For идёт поиск файлов по Вашим маскам, результат поиска - полные имена файлов- записываются в файл.
Затем в команде Xcopy этот файл с полными именами применяется для работы опции /EXCLUDE
Чтобы при этом генерировались полные имена, к указанной папке Steam дописывается её полный путь, взятый в команде
Set "DPath=%~dp0"
для диска и пути батника.
Для отладки заремьте
rem Del %NoDelete%
и после работы батника текстовым редактором посмотрите этот файл

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 12:45, 15-04-2016 | #4


Аватара для mrG0bliN

Пользователь


Сообщения: 90
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Затем в команде Xcopy этот файл с полными именами применяется для работы опции /EXCLUDE »
там указан диск С , если его заменить на просто \
это как то отразится на работу?
проверяю вроде все удаляется

беда удаляются папки с содержимым, их добавлять в маску?
короч в папке стим есть файлы и папки, файлы удаляются все как нужно, и убиваются файлы в нужных папках а это плохо как быть?

Последний раз редактировалось mrG0bliN, 15-04-2016 в 13:05.


Отправлено: 12:51, 15-04-2016 | #5


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


mrG0bliN, Подход неправильный. Просмотрите ваш код так:
Код: Выделить весь код
@echo on
set "Otkuda=Steam"
set "NoDelete=NoDelete.txt"
echo %~nx0>"%NoDelete%"
echo ssfn>>"%NoDelete%"
echo .blob>>"%NoDelete%"

for /f "delims=" %%a in ('xcopy /s /exclude:%NoDelete% "%Otkuda%\*.*" "C:\"') do echo del /q "%%~a"
pause
Откуда должны теперь удалиться оставшиеся файлы, из папки Steam? И они нужны как таковые на C:\ или нет, какова точно конечная цель задачи или интересует именно процедура исключения в команде xcopy?

Отправлено: 13:04, 15-04-2016 | #6


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Цитата:
там указан диск С , если его заменить на просто \
это как то отразится на работу?
А попробовать слабО? :-)
Я попробовал - никак. Почему? Команда Xcopy с ключом /L не вызывает реального копирования файлов, она выдаёт только список файлов. Поэтому не принципиально, что в папке назначения, лишь бы она существовала. В данном контексте C:\ вообще можно убрать.

Цитата alpap:
xcopy /s /exclude:%NoDelete% "%Otkuda%\*.*" "C:\ »
alpap, В заголовке проблемы "Удаление всех файлов кроме указанных". Xcopy с ключом /L не вызывает реального копирования файлов. То, что изобразили Вы, вызовет копирование, ИМХО, оно здесь ненужно. ИМХО, задача стоИт в том, чтобы удалить файлы в папке Steam и её подпапках, за исключением подпадающих под маску.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 15-04-2016 в 13:18.


Отправлено: 13:07, 15-04-2016 | #7


Аватара для mrG0bliN

Пользователь


Сообщения: 90
Благодарности: 2

Профиль | Отправить PM | Цитировать


alpap,

я написал батник который работает если находит рядом папку steam, если папки нет то выпадает окно что найдите папку и докиньте батник туда рядышком
от этого все и двигаюсь, сам по себе батник удаляет указанные файлы из папки стим
Цитата:
echo %g4%
Rd /s /q Steam\amf\ 2>nul 1>&2
Rd /s /q Steam\appcache\ 2>nul 1>&2
Rd /s /q Steam\config\htmlcache\ 2>nul 1>&2
Rd /s /q Steam\config\overlayhtmlcache\ 2>nul 1>&2
Rd /s /q Steam\depotcache\ 2>nul 1>&2
Rd /s /q Steam\dumps\ 2>nul 1>&2

что то типо такого

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

Цитата megaloman:
и её подпапках »
видимо мой косяк что подал идею не совсем корректно
не все папки и их содержимое удлять, есть исключения
честно не знаю как написать что бы их не удаляло по маске

Отправлено: 13:11, 15-04-2016 | #8


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Цитата mrG0bliN:
видимо мой косяк что подал идею не совсем корректно »
Сколько раз зарекался исправлять чужой код без надлежащей постановки! Как задан вопрос, так он и решен ...
Давайте забудем Ваш код и Вы подробно излОжите, что Вам нужно.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 13:24, 15-04-2016 | #9


Аватара для mrG0bliN

Пользователь


Сообщения: 90
Благодарности: 2

Профиль | Отправить PM | Цитировать


megaloman,

весь код работает, мне осталось поудалять файлы в самом стиме не затрагивая папок:
Код: Выделить весь код
bin\
config\
controller_base\
package\
skins\
STEAMAPPS\
userdata\
+исключить пару файлов

ваш код показал мне как исключать файлы, но на папки не влияет вот в чем суть

Последний раз редактировалось mrG0bliN, 15-04-2016 в 13:41.


Отправлено: 13:34, 15-04-2016 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление всех файлов кроме указанных, с содержанием указанных букв в названии

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - VBS удаление файлов, по маске и папок из указанных расположений. Karotin Скриптовые языки администрирования Windows 0 24-11-2015 15:05
CMD/BAT - [решено] Удаление файлов и папок кроме указанных. mrG0bliN Скриптовые языки администрирования Windows 20 07-11-2015 03:59
CMD/BAT - [решено] Удаление указанных подкаталогов в указаном каталоге ritrs@vk Скриптовые языки администрирования Windows 1 14-05-2015 00:04
CMD/BAT - [решено] Удаление всех файлов (всех типов) из всех подпапок, кроме расширений txt kot318 Скриптовые языки администрирования Windows 10 12-02-2015 15:48
Регулярное выражение - вырезать все кроме указанных в масиве слов venuko Вебмастеру 14 30-01-2009 09:51




 
Переход