Avada

|
Posted: Fri Apr 17, 2009 15:13 Post subject: |
|
|
D1P wrote: | Внутренние ассоциации для cm_ConfigChangeIniFiles не работают. |
А это Гислером и не планировалось (и, ЕМНИП, никем не запрашивалось). Для меня этот вопрос не особенно актуален, поскольку давно уже пользуюсь скриптом от mozers™.
Code: |
// em_configChangeIniFiles.js
// Version: 1.1
// Открытие файлов настройки Total Commander в редакторе, заданном в диалоге ТС "Настройка: Правка по F4"
// mozers™ <mozers@mail.ru> (Вопросы, предложения...)
// ============================================================
// Желающие использовать редактор, отличный от заданного в диалоге ТС "Настройка: Правка по F4"
// могут указать его тут:
var editor = '%ProgramFiles%\\SciTE\\SciTE.exe';
// Имя пользовательского файла FTP настроек (если не будет найден, то откроется wcx_ftp.ini)
var ftp_ini_name = 'ftp.ini';
// Инициализируем нужные нам ActiveX объекты
try {
var WshShell = new ActiveXObject('WScript.Shell');
var fso = new ActiveXObject('Scripting.FileSystemObject');
} catch(e) {
WScript.Echo('Для работы скрипта необходима установка Windows Script Host (WSH)!');
WScript.Quit();
}
try { var TCS = new ActiveXObject('TCScript.Helper') } catch(e) {}
// Находим местоположение wincmd.ini
var wincmd_ini = WshShell.ExpandEnvironmentStrings('%COMMANDER_INI%');
if (wincmd_ini == '%COMMANDER_INI%') {
WScript.Echo('Скрипт расчитан на работу с Total Commander верcии 6.55 или выше!');
WScript.Quit();
}
// Если заданный вручную редактор отсутствует, то берем редактор, заданный в диалоге ТС "Настройка: Правка по F4"
if (editor != ''){
editor = WshShell.ExpandEnvironmentStrings(editor);
if (!fso.FileExists(editor)){editor = ''}
}
if (editor == ''){
// Находим путь к редактору
editor = ReadINI (wincmd_ini, 'Editor', 'notepad.exe')
if (editor == 'none') {
editor = 'notepad.exe'
} else {
if (/%1/.test(editor)) { // это - для тех, кто после пути к редактору дописал %1
editor = editor.replace(/"*([^"]*)"*.*/,'$1')
}
}
}
if (!fso.FileExists(editor)){
WScript.Echo('Заданный редактор\N' + editor + '\nне найден!');
WScript.Quit();
}
// Обрамляем editor в кавычки
if (!/^\"/.test(editor)) {editor = '"' + editor + '"'}
// Находим местоположение файлов настройки
var profile_path = wincmd_ini.replace(/[^\\]*$/,'');
var ftp_ini = profile_path + ftp_ini_name;
if (!fso.FileExists(ftp_ini)) {ftp_ini = profile_path + 'wcx_ftp.ini'}
var usercmd_ini = profile_path + 'usercmd.ini';
// Находим местоположение файла меню
var wincmd_mnu = ReadINI (wincmd_ini, 'MainMenu','');
if (!/\\/.test(wincmd_mnu)) {
wincmd_mnu = WshShell.ExpandEnvironmentStrings('%COMMANDER_PATH%\\LANGUAGE\\' + wincmd_mnu)
}
// Открываем файлы в заданном редакторе
EditFile (wincmd_mnu);
EditFile (usercmd_ini);
EditFile (ftp_ini);
EditFile (wincmd_ini);
WScript.Quit();
// = = = = = = = = Ф У Н К Ц И И = = = = = = = =
// Открытие файла в редакторе
function EditFile (filename){
if (fso.FileExists(filename)){
WshShell.Run(editor + ' "' + filename + '"', 1, false)
}
}
// Чтение заданного ключа из файла
function ReadINI (filename, key, default_key){
// Если имеется установленный WSH Helper ActiveX for Total Commander (c)Volniy, то будем использовать его.
if (TCS) {
var value = TCS.INIRead(filename, 'Configuration', key, default_key);
value = WshShell.ExpandEnvironmentStrings(value);
return value;
} else {
// Если нет, то обходимся встроенными средствами
var value = default_key;
if (fso.FileExists(filename)) {
if (fso.GetFile(filename).Size > 0) {
var file = fso.OpenTextFile(filename, 1, false);
var re = new RegExp('^'+key+'\s*=','i');
while (!file.AtEndOfStream){
var text = file.ReadLine();
if (re.test(text)){
value = WshShell.ExpandEnvironmentStrings(text.replace(/^.*=/,''));
break;
}
}
file.Close();
}
}
return value;
}
}
|
Редактор указывается свой, вешается на кнопку - и все дела. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|