 |
|
Удаление файлов и папок кроме указанных.
Код:
rem очистка всего кроме папок
rem ==================================================================
setlocal enableextensions enabledelayedexpansion
chcp 1251 >nul
set a=чистим
set c=Нажмите кнопку: Удалить Y \ Пропустить N
chcp 866 >NUL
echo %a%
echo %c%
rem Укажите местонахождение директории для очистки
set sTargetFolder=steam\SteamApps\common\"dota 2 beta"
rem Поддиректория (или файл), которая НЕ должна удаляться
set sExcludeFilesOrFolders="_CommonRedist" "EmptySteamDepot" "game"
for /f "tokens=*" %%i in ('dir "%sTargetFolder%" /b /a:-d') do (
set /a bDelete = 1
for %%j in (%sExcludeFilesOrFolders%) do (
if /i "%%i" equ "%%~j" set /a bDelete = 0
)
if !bDelete! equ 1 del /f /q "%sTargetFolder%\%%i"
)
for /f "tokens=*" %%i in ('dir "%sTargetFolder%" /b /a:d') do (
set /a bDelete = 1
for %%j in (%sExcludeFilesOrFolders%) do (
if /i "%%i" equ "%%~j" set /a bDelete = 0
)
if !bDelete! equ 1 rd /s /q "%sTargetFolder%\%%i"
)
pause
endlocal
exit /b 0
при запуске пишет что" файл не найден" и мусор не удаляется
над что бы в конечной папке удалилось ВСЕ кроме указанных папок
где че я делаю не так?
не должно быть привязки к диску, вроде как я всегда делаю, кладу батник рядом с папкой, он все находит и делает
файлы разные картинки левые папки dmpm и файлы с кириллицей
брал основу тут: http://forum.oszone.net/thread-217825.html
видел фишку, типо дать "только чтение" папкам, потом удалить папку, удалится все кроме залоченных. Но это не вариант так как там нужные файлы >10gb
|
Как понять steam\SteamApps\common\"dota 2 beta" ???
Я не искал ошибку в Вашем коде. У меня получилось нечто такое (в меру моего понимания возможного имени папки которую обрабатываем):
Цитата:
кладу батник рядом с папкой
|
которую надо чистить и запускаю батник
Код:
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
set "sTargetFolder=Где чистим\Подпапка"
set sExcludeFilesOrFolders="_CommonRedist" "EmptySteamDepot" "game" "Нужный файл 1" "Нужный файл 2.txt"
FOR /F "usebackq delims=" %%i IN (`dir "%sTargetFolder%\" /b /A:D 2^>nul`) DO (
Set /A Log=0
FOR %%j IN (%sExcludeFilesOrFolders%) DO If "%%i"==%%j Set /A Log=1
If !Log!==0 Rd /s /q "%sTargetFolder%\%%i"
)
FOR /F "usebackq delims=" %%i IN (`dir "%sTargetFolder%\" /b /A:-D 2^>nul`) DO (
Set /A Log=0
FOR %%j IN (%sExcludeFilesOrFolders%) DO If "%%i"==%%j Set /A Log=1
If !Log!==0 Del "%sTargetFolder%\%%i"
)
Батник написан в 866 кодировке (Dos). Идея та же что и у Вас
Чуть короче, но , скорее всего, медленнее в работе
Код:
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
set "sTargetFolder=Где чистим\Подпапка"
set sExcludeFilesOrFolders="_CommonRedist" "EmptySteamDepot" "game" "Нужный файл 1" "Нужный файл 2.txt"
FOR /F "usebackq delims=" %%i IN (`dir "%sTargetFolder%\" /b 2^>nul`) DO (
Set /A Log=0
FOR %%j IN (%sExcludeFilesOrFolders%) DO If "%%i"==%%j Set /A Log=1
If !Log!==0 (
Rd /s /q "%sTargetFolder%\%%i" 2>nul || Del /q "%sTargetFolder%\%%i" 2>nul
)
)
|
Цитата:
Цитата megaloman
Как понять steam\SteamApps\common\"dota 2 beta" ??? »
|
отличное замечание, но толко я все равно не могу понять когда нужны ковычки а когда нет
вычитал что cmd не видит пути с пробелами и ковычки помогают там где в названии папки "дырки"
нашел почему именно некоторые файлы не удаляются, там присутствует такой значек:
—
пример: vcredist_x86 — копия.exe
как сделать так или добавить его в правило что бы такие файлы тоже удалялись?!
|
Цитата:
Цитата mrG0bliN
но толко я все равно не могу понять когда нужны ковычки а когда нет »
|
Нужны, когда в пути есть/могут быть пробельные символы (это не только сам пробел, но и другие). Лучше всего использовать всегда. Только лучше обрамлять весь путь целиком.
Цитата:
Цитата mrG0bliN
как сделать так или добавить его в правило что бы такие файлы тоже удалялись?! »
|
Перейти на WSH/PoSH. А может вот как раз тут и понадобится «chcp 1251».
|
Цитата:
Цитата Iska
А может вот как раз тут и понадобится «chcp 1251». »
|
супер просто супер все удалилось ))
впринципе для роботоспособности сойдет, а ништяки такие можно ли как нить реализовать?
что бы вначале было 3 пункта на выбор, например:
1.вариант а
2. вариант б
3. выход
и по нажатию цифр на клаве выбирался метод
|
Легко :):
Код:
@echo off
echo 1. вариант а
echo 2. вариант б
echo 3. выход
echo.
choice.exe /c 123 /m "Enter your choice:"
call :Choice%ErrorLevel%
exit /b 0
rem Variant A
:Choice1
echo Variant A
exit /b 0
rem Variant B
:Choice2
echo Variant B
exit /b 0
rem Exit
:Choice3
exit /b 0
rem Ctrl-C
:Choice0
rem Error
:Choice255
rem Nothing to do
exit /b 0
|
не закрывайте пока тему, все супер осталось переписать под себя и протестировать
|
а как получить выбор информации в столбик? в одну строку не оч :(
|
Цитата:
Цитата mrG0bliN
а как получить выбор информации в столбик? в одну строку не оч »
|
Не пойму Вашего вопроса про столбик. Покажите/нарисуйте хотелку.
|
Цитата:
Цитата Iska
Покажите/нарисуйте хотелку. »
|

|
mrG0bliN, так я и привёл выше пример именно в столбик. Чем он Вам не понравился?
|
Цитата:
Цитата Iska
Чем он Вам не понравился? »
|
тут дело в другом, мы не понимаем друг друга )))
при запуске батника перед пользвателем идет выбор: - тыкай 1
- тукай 2
- тыкай 3 - выход
юзер жмет 1н и там все по феншую
если жмет 2 то совсем другое
дак вот хотелось бы не сам "код" столбиком, а выводимая инфа перед юзером в столбик а не в строчку
|
Цитата:
Цитата mrG0bliN
тут дело в другом, мы не понимаем друг друга ))) »
|
Точно. Не понимаем.
Вот что выводит тот код у меня:
А у Вас?
Цитата:
Цитата mrG0bliN
если жмет 2 то совсем другое »
|
Какое другое?
|
Цитата:
Цитата Iska
echo 1. вариант а
echo 2. вариант б
echo 3. выход
echo. »
|
так просто это дело не отображается : (
мб в этом моя проблемка? так кракозябра
|
Цитата:
Цитата mrG0bliN
так просто это дело не отображается : ( »
|
А «не просто» — как отображается?
Cохраните пакетный файл в кодировке OEM/866 (AkelPad, Bred2/Bred3, редактор Far Manager'а).
|
Цитата:
Цитата Iska
А «не просто» — как отображается? »
|
странно но все работает ))) 000
Код:
@Echo Off
@chcp 1251
title Clean_dota2_tools_win10 by Mirajana
@CLS
setlocal enableextensions enabledelayedexpansion
chcp 1251 >nul
set a= Выбран вариант: 1.Исцеление Steam от болячек
set b= Выбран вариант: 2. Дополнительные плюшки
set v= Выбран вариант: 3. выход
set n=.
echo Варианты очистки Steam:
echo 1.Исцеление Steam от болячек
echo 2. Дополнительные плюшки
echo 3. Выход
choice.exe /c 123 /m " "
call :Choice%ErrorLevel%
exit /b 0
chcp 866 >NUL
rem Variant 1
:Choice1
@Cls
echo %a%
rem приветствие
варианты очистки выбираются корректно
эт конечно же моя мечта, но возможно ли на cmd по окончанию очистки сделать вывод информации о том сколько файлов было удалено?
|
Iska, сделать вывод информации о том сколько файлов было удалено?
или лог результата очистки , это сложно ? если да то тему можно закрывать
если нет то я справлюсь ))
|
Цитата:
Цитата mrG0bliN
Iska, сделать вывод информации о том сколько файлов было удалено? »
|
По Вашему коду? Не ранее, чем «rd /s» будет отображать удалённое.
Переходите на PowerShell, там со всем этим проще.
|
Цитата:
Цитата Iska
Переходите на PowerShell, там со всем этим проще. »
|
тогда темку можно закрывать и я создам новую в разделе с повершелл
послед вопросик в догонку - ps1 может запускаться как простой рычаг? а сами внутренности (готовый скрипт) скачивается и выполняется при подключении к интернету с заранее прописанного сайта?
|
«Послед вопросик» мною не понят.
|
Цитата:
Цитата Iska
«Послед вопросик» мною не понят. »
|
-_- видимо все очень плохо
полистал посмтрел повер шел слишком сильно для моих мозгов, думаю не осилю
|
Время: 13:55.
© OSzone.net 2001-