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

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

Ответить
Настройки темы
CMD/BAT - [решено] Не получается создать bat файл

Новый участник


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

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


Доброго времени суток.

Облазил все темы, но для себя не нашел ничего. Буду рад любой помощи.

Условие:

Есть каталог, для примера назовем его "test123", в нем находятся папки( для примера bx1 и bx2) и файлы(для примера test1, test2,test3,test4). Необходимо создать батник который будет удалять все кроме папки bx1 и файлов test1, test4. Лазя второй день по интернету создал вот такой строку кода, в которой удаляются только необходимые мне файлы.
А как удалить папки со всеми файлами внутри, тот же bx2 не могу понять. И как мне отключить окно подтверждения, что бы все удалялось без всплывающего окна?
Я чайник, заранее извиняюсь за возможно глупые вопросы.

@echo off
for /f "tokens=*" %%v in ('dir D:\ /b "test123\*.*"') do if NOT "%%v" == "test1.txt" if NOT "%%v" == "test2.txt" if NOT "%%v" == "test4.txt" del "test123\%%v"

Отправлено: 17:56, 14-01-2021

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell:
Код: Выделить весь код
dir C:\temp\test123 -Recurse |? name -notmatch "^bx1$|^test[14]" |del -Recurse -Force -Confirm:$false
CMD:
Код: Выделить весь код
powershell -command "dir C:\temp\test123 -Recurse |? name -notmatch '^bx1$|^test[14]' |del -Recurse -Force -Confirm:$false"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 18:55, 14-01-2021 | #2



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

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


Ветеран


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

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


«Чистый» пакетный файл:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=C:\Мои проекты\0332\0001\test123

pushd "%sSourceFolder%" || (
	echo Can't find source folder [%sSourceFolder%].
	exit /b 1
)

for /f "usebackq delims=" %%i in (
	`2^>nul dir /b /a:d  /o:n "*.*" ^| findstr.exe /i /v /l /b /e /c:"bx1"`
) do echo rd /s /q "%%~i"

for /f "usebackq delims=" %%i in (
	`2^>nul dir /b /a:-d /o:n "*.*" ^| findstr.exe /i /v /l /b /e /c:"test1" /c:"test4"`
) do echo del /f /q "%%~i"

popd

endlocal
exit /b 0
Для реального удаления уберите echo.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:40, 14-01-2021 | #3


Новый участник


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

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


Изображения
Тип файла: jpg 1.JPG
(28.9 Kb, 4 просмотров)
Тип файла: jpg 2.JPG
(49.4 Kb, 3 просмотров)

Цитата Iska:
«Чистый» пакетный файл:
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFolder=C:\Мои проекты\0332\0001\test123
pushd "%sSourceFolder%" || (
echo Can't find source folder [%sSourceFolder%].
exit /b 1
)
for /f "usebackq delims=" %%i in (
`2^>nul dir /b /a:d /o:n "*.*" ^| findstr.exe /i /v /l /b /e /c:"bx1"`
) do echo rd /s /q "%%~i"
for /f "usebackq delims=" %%i in (
`2^>nul dir /b /a:-d /o:n "*.*" ^| findstr.exe /i /v /l /b /e /c:"test1" /c:"test4"`
) do echo del /f /q "%%~i"
popd
endlocal
exit /b 0
Для реального удаления уберите echo. »
Прописал реальные каталог и имена файлов, так же находится все на другом диске. Убрал echo, почему то не работает...Что не так заполнил? Скрины прилагаю

Отправлено: 20:07, 14-01-2021 | #4


Ветеран


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

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


Цитата Xlsss:
.Что не так заполнил? »
Как минимум:
Код: Выделить весь код
…  ^| findstr.exe /i /v /l /b /e /c:"bx1" …
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:50, 14-01-2021 | #5


Новый участник


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

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


Изображения
Тип файла: jpg Снимок.JPG
(47.3 Kb, 2 просмотров)

Цитата Iska:
Как минимум:
Код:
… ^| findstr.exe /i /v /l /b /e /c:"bx1" … »

Исправил, теперь указанный каталог не удаляется. Но файлы все трет. Скрин приложил

Отправлено: 09:45, 15-01-2021 | #6


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


А мой вариант страшно попробовать?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 10:49, 15-01-2021 | #7


Ветеран


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

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


Как то так)))
Код: Выделить весь код
robocopy  /e /move /xd bx1  /xf test1 /xf test4 c:\test123 c:\2del 
rd /s /q c:\2del

-------
консольный клиент telegram для Windows: www.elapser.info


Последний раз редактировалось Опиум, 15-01-2021 в 15:00.

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

Отправлено: 14:41, 15-01-2021 | #8


Ветеран


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

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


Цитата Xlsss:
Но файлы все трет. Скрин приложил »
Коллега, так файлы надо указывать с расширениями, в Вашем случае:
Код: Выделить весь код
… ^| findstr.exe /i /v /l /b /e /c:"ascfdvc.txt" /c:"asdacvs.txt" /c:"dsgfsg.txt" …
То, что расширения у Вас не отображаются в Проводнике, не значит, что их нет.

P.S. Я вообще не понимаю, почему уже с Vista+ не сделали отображение расширений умолчанием.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:19, 15-01-2021 | #9


Ветеран


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

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


Код: Выделить весь код
@echo off
set "d=test123"
set "d1=bx1"
set "f1=test1.txt"
set "f2=test4.txt"

:: Файлы
for /f "delims=" %%a in ('forfiles /p "%d%" /s /c "cmd /c if @isdir==FALSE echo @path"^|findstr /v /c:"%f1%" /c:"%f2%"') do >nul 2>&1 del /q "%%~a"
:: Папки
for /f "delims=" %%a in ('forfiles /p "%d%" /s /c "cmd /c if @isdir==TRUE echo @path"^|findstr /v /c:"%d1%"') do >nul 2>&1 rd /s /q "%%a"
pause& exit
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:32, 16-01-2021 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] создать bat файл из vbs с опцией самоудаления (шуточный файл) DJIOAN Скриптовые языки администрирования Windows 7 19-06-2020 00:15
Установка - [решено] не получается создать разделы через файл Autounattend.xml uefi mcintosh55 Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 4 03-01-2018 13:08
CMD/BAT - [решено] Как создать bat файл для копирования. codi28 Скриптовые языки администрирования Windows 4 21-11-2013 16:55
CMD/BAT - Помогите создать bat файл установкой софта Impuls717 Скриптовые языки администрирования Windows 8 25-09-2013 03:01
Как создать *.bat файл? ssdm Хочу все знать 2 26-02-2007 09:36




 
Переход