Admin ›
Инструменты для чистки кэша 1С ›
#22
28.06.23 8:22
+ автору
Вдруг кому пригодится, пользуюсь давно, но по моему это для локальных компов, где лежит для серверных уже не помню:
Скрипт на WBS |
---|
<?xml version='1.0' encoding='windows-1251' standalone='yes'?>
<package>
<job id='main'>
<runtime>
<description>
Скрипт для очистки кэша 1С
Проверяет наличие запущенного процесса 1С, если 1С не запущен то производит очистку кэша.
</description>
</runtime>
// Маска имени процесса 1С, блокирующего очистку кэша.
<resource id="Process1cNameMask">
^1cv8*
</resource>
// Путь к папке Roaming кэшей различных версий 1С
<resource id="GlobalCachePath">
%APPDATA%\1C
</resource>
// Путь к папке Local кэшей различных версий 1С
<resource id="LocalCachePath">
%LOCALAPPDATA%\1C
</resource>
// Маска папки кэша базы 1С
<resource id="CacheFolderNameMask">
[A-Za-z0-9]{8}\-[A-Za-z0-9]{4}\-[A-Za-z0-9]{4}\-[A-Za-z0-9]{4}\-[A-Za-z0-9]{12}
</resource>
<ob ject id="WshShell" progid="WScript.Shell" />
<reference object="WScript.Shell"/>
<ob ject id="FSO" progid="Scripting.FileSystemObject" />
<reference object="Scripting.FileSystemObject"/>
<sc ript language='JScript'><![CDATA[
//--------------------------------- Константы ----------------------------------
var mbOK = 0x00; // Кнопка ОК.
var mbOkCancel = 0x01; // Кнопки ОК и Отмена.
var mbAbortRetrySkip = 0x02; // Кнопки Стоп, Повтор, Пропустить.
var mbYesNoCancel = 0x03; // Кнопки Да, Нет, Отмена.
var mbYesNo = 0x04; // Кнопки Да и Нет.
var mbAbortRetry = 0x05; // Кнопки Повтор и Отмена.
var mtWarning = 0x30; // Отображает символ восклицания
var mtError = 0x10; // Отображает красный "Х"
var mtInformation = 0x40; // Отображает "i" в круге
var mtConfirmation = 0x20; // Отображает вопросительный знак
function main ()
{
if (Check1cIsRun())
{
WshShell.PopUp("Запущена 1С, дальнейшая работа скрипта невозможна!", 0, WScript.ScriptName, mtError);
return;
}
GlobalCachePath = WshShell.ExpandEnvironmentStrings(getResource("GlobalCachePath").trim());
Folder = FSO.GetFolder(GlobalCachePath);
for (var e = new Enumerator(Folder.SubFolders); !e.atEnd(); e.moveNext())
{
ClearCache(e.item().Path);
}
LocalCachePath = WshShell.ExpandEnvironmentStrings(getResource("LocalCachePath").trim());
Folder = FSO.GetFolder(LocalCachePath);
for (var e = new Enumerator(Folder.SubFolders); !e.atEnd(); e.moveNext())
{
ClearCache(e.item().Path);
}
WshShell.PopUp("Очистка кэша 1С завершена успешно!", 0, WScript.ScriptName, mtInformation);
}
function ClearCache(CachePath)
{
var Folder;
var CacheFolderNameMask;
Folder = FSO.GetFolder(CachePath);
CacheFolderNameMask = getResource("CacheFolderNameMask").trim();
for (var e = new Enumerator(Folder.SubFolders); !e.atEnd(); e.moveNext())
{
FolderPath = e.item().Path
if(FolderPath.match(CacheFolderNameMask))
{
CacheFolder = FSO.GetFolder(FolderPath);
CacheFolder.Delete(true);
}
}
}
String.prototype.trim=function()
{
return this.replace(/^\s+|\s+$/g, '');
}
function Check1cIsRun()
{
var WMI;
var Processes;
var Process1cName;
WMI = GetObject("winMgmts:");
Processes = new Enumerator(WMI.ExecQuery("SEL ECT * FR OM Win32_Process"));
Process1cNameMask = getResource("Process1cNameMask").trim();
while (!Processes.atEnd())
{
Process=Processes.item();
if (Process.Name.match(Process1cNameMask))
{
return true;
}
Processes.moveNext();
}
return false;
}
main();
WScript.Quit(0);
]]></sc ript>
</job>
</package> |
Прикрепленные файлы:
ClearCache_1C.wsf