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

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

Ответить
Настройки темы
CMD/BAT - [решено] Удаление определенных подпапок и файлов в каталоге
Stalker_AleX333


Сообщения: n/a

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


Изменения
Автор: Stalker_AleX333
Дата: 26-02-2017
Завис на таком несложном моменте, как удаление определенных подпапок и файлов в каталоге.

Нечто подобное можно сделать таким путем:
Код: Выделить весь код
cd /d %имя папки% && rmdir /s /q %имя папки%
Но в данном случае смена директории наверное не нужна. cmd-шник запускается из основного каталога, а необходимые к удалению подпапки (не все. по имени) и некоторый набор файлов находятся в подкаталоге Data.

И да, я кажется сделал очень большую бяку, допустив опечатки в:
Код: Выделить весь код
if %var%==3 del /F /S /Q /A "%Data\Textures%\*.*"
Итог - пошло массовое удаление файлов с диска на котором был запущен cmd-шник. Успех по-жизни...
Это называется, не пишите ничего в 2 часа ночи...

Отправлено: 13:28, 26-02-2017

 

Ветеран


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

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


Цитата Stalker_AleX333:
а необходимые к удалению подпапки (не все. по имени) »
Какие именно «подпапки»?

Цитата Stalker_AleX333:
некоторый набор файлов находятся в подкаталоге Data. »
Какой именно «набор»?

Отправлено: 14:20, 26-02-2017 | #2



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

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

Stalker_AleX333


Сообщения: n/a

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


Iska, писать будет долго, приложу скриншоты:




Там выделено и будущее расположение cmd-шника и содержимое папки Data из которой и нужно будет удалять определенные подпапки целиком и файлы по списку. (Возможно, стоит использовать внешний файл для этого списка?).

Последний раз редактировалось Stalker_AleX333, 26-02-2017 в 15:01.


Отправлено: 14:56, 26-02-2017 | #3


Ветеран


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

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


Stalker_AleX333, и на что мне Ваши скриншоты?

Отправлено: 15:04, 26-02-2017 | #4

Stalker_AleX333


Сообщения: n/a

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


Iska, я что-то не так спрашиваю? Вроде, неясностей нет. Мне нужен образец кода удаляющий подпапки (Ну пусть будет textures и meshes) из каталога Data находящегося в одной директории с cmd-шником, но не трогающий его самого, а также файлы из этого же каталога (Например, test1, test2. Без привязки к их расширению)

Отправлено: 16:42, 26-02-2017 | #5


Ветеран


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

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


Не проверялось:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

pushd "%~dp0" && (
	rd /s /q "Data\textures"
	rd /s /q "Data\meshes"
	del /f /q "Data\test1" "Data\test2"
	popd
)

endlocal
exit /b 0
Что такое «Без привязки к их расширению»?

Отправлено: 17:14, 26-02-2017 | #6

Stalker_AleX333


Сообщения: n/a

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


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

Пока не работает, но может я сам в чем-то накосячил (кусок кода):
Код: Выделить весь код
@Set /p var="> Введите ваш ответ и нажмите Enter: "

:: Загрузка Reshade
if %var%==5 cls && start https://reshade.me
exit

:: Загрузка обновлений
if %var%==4 cls && start https://yadi.sk/d/D54ZBhxj3ERxw6
exit

:: Полное удаление сборки
if %var%==3 cls && setlocal enableextensions enabledelayedexpansion

:: Удаляем папки сборки по списку
pushd "%~dp0" && (
	rd /s /q "Data\Interface"
	rd /s /q "Data\Meshes"
	rd /s /q "Data\Scripts"
	rd /s /q "Data\Sound"
	rd /s /q "Data\Textures"
	rd /s /q "Data\Video"
	
:: Удаляем плагины сборки по списку	
	del /f /q "Data\test1" "Data\test2"
	popd
)

endlocal
:: Удаляем сам cmd-шник (пока не включать!)
::&& del "%~dpnx0"
pause
exit

Отправлено: 18:27, 26-02-2017 | #7


Ветеран


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

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


Цитата Stalker_AleX333:
имеется ввиду, что расширение этих файлов не должно иметь значения. »
Тогда замените одну строку на:
Цитата Stalker_AleX333:
del /f /q "Data\test1.*" "Data\test2.*" »
А это:
Цитата Stalker_AleX333:
Код: Выделить весь код
…cls && start …
»
зачем? Для объединения используется один символ &. То есть, либо:
Код: Выделить весь код
if %var%==5 cls & start https://reshade.me
либо:
Код: Выделить весь код
if %var%==5 (
    cls
    start https://reshade.me
)
Для чего у Вас там куча exit вообще непонятно, поскольку в таком виде дальше первого exit выполнение не пойдёт.

Отправлено: 19:09, 26-02-2017 | #8

Stalker_AleX333


Сообщения: n/a

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


Iska, ну в нюансах я туго пока разбираюсь. Как-то не доводилось раньше ни bat-ники, ни cmd-шники писать. Там может быть куча ошибок.

Вообще я хотел, чтобы после завершения операции (кроме полного удаления) и последующего нажатия Enter окно возвращалось в исходное состояние, т.е. к списку возможных действий.

Весь код целиком
Код: Выделить весь код
@cls

@echo ----------------------------------------------------------
@echo  Панель упраления для Silver Raven mods pack версии 1.1.2
@echo ----------------------------------------------------------
@echo.
@echo.

@echo 1. Копировать отсортированный список плагинов в AppData пользователя?
@echo.
@echo  Нажав цифру 1, вы подтверждаете свое согласие на копирование.
@echo.
@echo.
@echo.

@echo 2. Проверка наличия обновлений сборки. (Настоятельно рекомендуется проводить хотя-бы раз в месяц).
@echo.
@echo  Нажав цифру 2, вы подтверждаете свое согласие на переход по ссылке загрузки обновлений. (Откроется браузер)
@echo.
@echo.
@echo.

@echo 3. Очистка сборки от устаревших файлов. (Используйте после установки обновлений сборки)
@echo.
@echo  Нажав цифру 3, вы подтверждаете свое согласие на очистку сборки.
@echo.
@echo.
@echo.

@echo 4. Загрузка ReShade. (Не влияет на производительность игры, в отличии от ENB и SweetFX)
@echo.
@echo  Нажав цифру 4, вы подтверждаете свое согласие на переход по ссылке загрузки. (Откроется браузер)
@echo.
@echo.
@echo.

@echo 5. Полное удаление сборки. (Если вы хотите сохранить какие-либо файлы, сделайте это сейчас)
@echo.
@echo  Нажав цифру 5, вы подтвердите свое согласие на полное удаление сборки.
@echo  *ВСЕ файлы в подпапках Interface, Meshes, Scripts, Sound, Textures, Video, а также плагины сборки и данный cmd файл будут удалены!
@echo.
@echo.
@echo.

@Set /p var="> Введите ваш ответ и нажмите Enter: "

:: Копирование отсортированного списка плагинов
if %var%==1 ( 
cls
set "BoxOut=%LOCALAPPDATA%\Skyrim Special Edition"
set "FileIn=Plugins.txt"
if not exist "%BoxOut%" md "%BoxOut%"
copy /Y "%~dp0%FileIn%" "%BoxOut%\"
pause
)

:: Загрузка обновлений
if %var%==2 (
cls
start https://yadi.sk/d/D54ZBhxj3ERxw6
exit
)

:: Очистка сборки от устаревших файлов
if %var%==3 (
cls 
del "Data\Textures\effects\fxwhitewater02.*" "Data\Meshes\actors\manekin" 
pause
exit
)

:: Загрузка Reshade
if %var%==4 cls && start https://reshade.me
exit

:: Полное удаление сборки
if %var%==5 ( 
cls 
setlocal enableextensions enabledelayedexpansion
:: Удаляем папки сборки по списку
pushd "%~dp0" & (
	rd /s /q "Data\Interface"
	rd /s /q "Data\Meshes"
	rd /s /q "Data\Scripts"
	rd /s /q "Data\Sound"
	rd /s /q "Data\Textures"
	rd /s /q "Data\Video"	
:: Удаляем плагины сборки по списку	
	del /f /q "Data\test1.*" "Data\test2.*"
	popd
)

endlocal
:: Удаляем сам cmd-шник (пока не включать!)
::&& del "%~dpnx0"
pause
exit
)

Последний раз редактировалось Stalker_AleX333, 26-02-2017 в 21:44.


Отправлено: 21:29, 26-02-2017 | #9


Ветеран


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

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


Цитата Stalker_AleX333:
после завершения операции (кроме полного удаления) и последующего нажатия Enter окно возвращалось в исходное состояние, т.е. к списку возможных действий »
Код: Выделить весь код
@echo off
:g_menu
echo Список возможных действий
echo ----------------------------------
echo Операция 1        - [нажать 1]
echo Операция 2        - [нажать 2]
echo Завершение работы - [нажать 0]
echo ----------------------------------
set /p m=
if %m%==2 call :oper2
if %m%==1 call :oper1
if %m%==0 goto :eof
goto g_menu
pause& exit
 
:oper1
 echo Выполняем операцию 1
exit /b

:oper2
 echo Выполняем операцию 2
exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:13, 28-02-2017 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление Папки и всех подпапок и файлов sashok60 Скриптовые языки администрирования Windows 16 02-03-2016 08:54
CMD/BAT - [решено] Удаление определенных файлов из подпапок. NikolayHAOS Скриптовые языки администрирования Windows 1 30-10-2013 00:58
CMD/BAT - Удаление всех файлов из подпапок Scumtron Скриптовые языки администрирования Windows 2 17-10-2013 16:15
CMD/BAT - [решено] Удаление определенных файлов из подпапок 91892823 Скриптовые языки администрирования Windows 2 15-11-2012 07:31
CMD/BAT - [решено] удаление всех файлов и подпапок в нескольких папках alexandri Скриптовые языки администрирования Windows 18 12-01-2010 05:33




 
Переход