|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Удаление папок средствами Windows |
|
|
Любой язык - Удаление папок средствами Windows
|
Новый участник Сообщения: 3 |
Помогите новичку плиз.
"Необходимо написать скрипт и запускать его при каждом выходе пользователя из виндоус. Скрипт должен очищать заданную директорию по определенной маске: директория - C:\Users\"ПОЛЬЗОВАТЕЛЬ"\AppData\Local\1C\1cv8 удаляем только папки с названиями типа - 73c58a87-39c7-4571-b760-5a70505b271f статично кол-во символов между дефисами, общее кол-во символов в названии и набор символов - любые цифры и буквы без спецсимволов и пробелов." Вобщем не могу понять как задачу на удаление папок с определённым количеством символов,а остальные файлу и папки,чтоб оставались целыми. |
|
Отправлено: 23:20, 09-07-2017 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:10, 10-07-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Тут бы хорошо смотрелось такое:
Скрытый текст
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFolder=%LocalAppData%\1C\1cv8
set sTemplate=[0-9a-f]
set sTemplate4=%sTemplate%%sTemplate%%sTemplate%%sTemplate%
set sTemplate8=%sTemplate4%%sTemplate4%
set sTemplate12=%sTemplate4%%sTemplate4%%sTemplate4%
if exist "%sSourceFolder%\." (
pushd "%sSourceFolder%" && (
for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:d "????????-????-????-????-????????????" ^| findstr.exe /r /i /x /c:"%sTemplate8%-%sTemplate4%-%sTemplate4%-%sTemplate4%-%sTemplate12%"`) do echo rd /s /q "%%~i"
popd
)
) else (
echo Can't find source folder [%sSourceFolder%].
exit /b 1
)
endlocal
exit /b 0
но, к сожалению, как не крути — шаблон получается на шесть символов длиннее, нежели допустимо для findstr.exe. И это под новыми ОС! Для XP и ниже в плане ограничений всё ещё хуже. Посему, либо с некоторым низким риском удаления лишнего: Скрытый текст
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFolder=%LocalAppData%\1C\1cv8
if exist "%sSourceFolder%\." (
pushd "%sSourceFolder%" && (
for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:d "????????-????-????-????-????????????"`) do echo rd /s /q "%%~i"
popd
)
) else (
echo Can't find source folder [%sSourceFolder%].
exit /b 1
)
endlocal
exit /b 0
(для реального удаления убрать выделенное echo), либо WSH/PoSH, где нет таких ограничений. Цитата dreamzed:
|
|
Отправлено: 05:06, 10-07-2017 | #3 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать В CMD есть риск непредсказуемого поведения команды с маской.
Вот vbs-скрипт, где задача решена средствами WSH
Set WShell = CreateObject("WScript.Shell") WhereDir = WShell.ExpandEnvironmentStrings("%LocalAppData%") + "\1C\1cv8" Set FSO = CreateObject("Scripting.FileSystemObject") If Not FSO.FolderExists(WhereDir) Then MsgBox "Нет папки" + vbCrLf + vbCrLf + WhereDir Else On Error Resume Next LL = FSO.DeleteFolder(WhereDir + "\????????-????-????-????-????????????", True) On Error GoTo 0 End If |
------- Последний раз редактировалось megaloman, 10-07-2017 в 14:15. Отправлено: 14:00, 10-07-2017 | #4 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Iska:
|
||
------- Отправлено: 15:18, 10-07-2017 | #5 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
в CMD маски ведут себя эталонно - их там придумали, если в VBS поведение отличается - это как раз вызывает недоумение. |
|
Отправлено: 19:11, 10-07-2017 | #6 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать #4
у меня сейчас тестовая папка находится по такому пути- D:\1c\1c8 подскажите пожалуйста,что поменять в вашем коде.чтобы он заработал. Ещё раз прошу прощение за нубизм, первый раз в жизни со скриптами столкнулся) |
Отправлено: 20:01, 10-07-2017 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Бармалей:
Вот CMD с регулярным выражением.
@Echo Off Set "BoxIn=%LocalAppData%\1C\1cv8" for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:d "%BoxIn%\????????-????-????-????-?????????????"`) Do Call :DelDir "%%i" GoTo :Eof :DelDir Set "DirName=%~1" If "%DirName:~35,1%"=="" GoTo :Eof Set "Delim=%DirName:~8,1%%DirName:~13,1%%DirName:~18,1%%DirName:~23,1%%DirName:~36,1% If Not "%Delim%"=="----" GoTo :Eof Set "Symb=%DirName:~0,8%%DirName:~9,4%%DirName:~14,4%%DirName:~19,4%%DirName:~24,12% Echo %Symb%| Findstr.exe /R /I "[^0-9a-z]" >nul|| RD /S /Q "%BoxIn%\%~1" GoTo :Eof rem 1 2 3 rem 012345678901234567890123456789012345 rem 73c58a87-39c7-4571-b760-5a70505b271f rem 12345678 1234 1234 1234 123456789012 Цитата dreamzed:
В vbs-скрипте WhereDir = "D:\1C\1cv8" |
|||
------- Последний раз редактировалось megaloman, 10-07-2017 в 20:50. Отправлено: 20:35, 10-07-2017 | #8 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Busla,
Цитата Busla:
dir /B /A:D "????????-????-????-????-????????????" Выдаст (естественно, при наличии папок) 73c58a87-39c7-4571-b760-3a70505b271 73c58a87-39c7-4571-b760-5a70505b271f 73c58a87-39c7-4571-b760-5 Спрогнозировать иные выверты работы команд CMD с маской не берусь, сталкивался с ними не раз, для меня это непредсказуемо, хотя когда-то на форуме объяснение звучало А вот CMD с рег выражением отработал и пока обмануть его не получилось. Кстати, в моём vbs-скрипте с этой маской тоже кривая история, так что надо его переписывать, алгоритм только придумать. |
|
------- Последний раз редактировалось megaloman, 11-07-2017 в 08:26. Отправлено: 20:50, 10-07-2017 | #9 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Cпасибо Вам Огромное!Да прибудет с Вами высокие зарплаты и крепкое здоровье!
|
Последний раз редактировалось dreamzed, 10-07-2017 в 22:23. Отправлено: 20:51, 10-07-2017 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Установка - Удаление папок с установочного диска Windows 7 | Pavel_01 | Microsoft Windows 7 | 1 | 26-01-2015 17:08 | |
Разное - Удаление ненужных (пустых) папок в Windows 7 | Макс Фолдер | Microsoft Windows 7 | 2 | 29-06-2013 18:25 | |
Установка - [решено] Удаление папок Windows.old | Doggy | Microsoft Windows 8 и 8.1 | 3 | 06-03-2012 18:54 | |
Разное - как запланировать удаление файла средствами Windows | jam2551 | Microsoft Windows 2000/XP | 4 | 01-10-2010 04:09 | |
Доступ - [решено] Можно ли проследить средствами Windows удаление файлов | EvgeniyQQQ | Microsoft Windows 2000/XP | 8 | 09-08-2007 14:46 |
|