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

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

Ответить
Настройки темы
CMD/BAT - [решено] удаления кэша 1с

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


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

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


Здравствуйте! Появилась необходимость удалять кэш 1с, папочки в профиле пользователя
располагаются они по путям C:\Users\user\AppData\Local\1C\1Cv82 и C:\Users\user\AppData\Roaming\1C\1Cv82, а называются вот так:
Код: Выделить весь код
 f4f8389b-94d0-4fd3-83c1-97435d600264
06cb45d1-4bbd-426c-9694-5c3faafa72a7
131811ce-f0fa-4aa1-88bb-18e97b0bb43b
131d217d-d2fb-420b-8c24-a818068d2e1e
25fe9715-6c5d-4dd2-b6e3-c15520b09b78
8d9603a8-43bd-40fb-b607-cad7669efa1c
Названия всегда разные, но всегда 37 символов, всегда 4 дефиса, и порядок дефисов один и тот же
Как вывести все папки из всех каталогов пользователей я понял:
Код: Выделить весь код
@echo off
for /F "tokens=*" %%a in ('dir c:\users /b /ad') do ( 
	for /F "tokens=*" %%b in ('dir c:\users\%%a\AppData\Local\1C\1Cv82 /b /ad') do (
		@echo for2:  %%b
		)
	for /F "tokens=*" %%b in ('dir c:\users\%%a\AppData\Roaming\1C\1Cv82 /b /ad') do (
		@echo for3:  %%b
		)
	)
Но как определить, что эту папку можно удалить ( т.е. она выглядит как случайные_8_цифры_буквы-случайные_4_цифры_буквы-случайные_4_цифры_буквы-случайные_12_цифры_буквы)
Подскажите пожалуйста, как записать условие, чтоб если имя папки схоже с тем, что я написал, то папка бы удалялась ( со всеми вложенными)
Спасибо!

Отправлено: 22:35, 02-09-2014

 

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


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

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


yanus74
Так задайте маску для папки. И возьмите в двойные кавычки путь, на всякий случай. Например так:
Код: Выделить весь код
for /F "tokens=*" %%b in ('dir "c:\users\%%a\AppData\Local\1C\1Cv82\????????-????-????-????-????????????" /b /ad') do echo for2: "c:\users\%%a\AppData\Local\1C\1Cv82\%%b"
и если нормально, замените echo for2: на rd /s /q
UPD: Вместо dir можно воспользоваться такой командой
Код: Выделить весь код
for /d  %%b in ("c:\users\%%a\AppData\Local\1C\1Cv82\????????-????-????-????-????????????") do echo for2: "c:\users\%%a\AppData\Local\1C\1Cv82\%%b"
Из справки:
FOR /D %переменная IN (набор) DO команда [параметры]

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

Последний раз редактировалось dedmazai1870, 03-09-2014 в 01:24.


Отправлено: 00:54, 03-09-2014 | #2



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

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


Ветеран


Contributor


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

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


Код: Выделить весь код
@echo off

set "folders=C:\Users\%%k\AppData\$\1C\1Cv82\*-*-*-*-*"
for /f "tokens=1* delims==" %%i in ('
 wmic useraccount where Status^='OK' get Name /value
') do (
 for /f "delims=" %%k in ("%%j") do ( 
  for /f "delims=" %%l in ('
   dir /ad/b/s "%folders:$=Local%" "%folders:$=Roaming%"^| findstr /ir "\\[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]\-"^| findstr /ir "\-[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\-[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\-[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\-"^| findstr /ir "\-[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$"
  ') do (
   echo rd /q/s "%%l"
   )
  )
 )

pause>nul
exit /b

yanus74, если код устроит, команды "echo " и "pause>nul" (отмечены красным цветом) из него уберите.
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:15, 03-09-2014 | #3


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


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

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


Georgio, спасибо!
А откуда берется %%j ?
все, понял, "tokens=1*"

Отправлено: 15:04, 03-09-2014 | #4


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


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

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


Georgio, не удаляются папки с Roaming и можно прокомментировать код если возможно не очень его понял .

Отправлено: 08:01, 28-07-2016 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 R2 - [решено] Serv2008R2 + RemoteAPP+printer+1С 7.7 и 1С 8.2 Sermion Windows Server 2008/2008 R2 2 05-06-2012 12:20
[решено] Программирование 1С и доработки конфигураций 1С Kerberos_2.0 Хочу все знать 4 26-02-2011 17:45
FreeBSD - Очистка кэша jaku Общий по FreeBSD 12 17-12-2010 08:22
V. 2007 - Увеличение кэша правил barya Microsoft Exchange Server 2 01-12-2009 12:36




 
Переход