Показать полную графическую версию : CMD не могу осилить многофункциональный скрипт.
POSTREALITY
01-11-2016, 15:43
Товарищи, здравствуйте.
Подскажите пожалуйста, что в скрипте не так?
@echo off
setlocal enabledelayedexpansion
set "LogPath=C:\LOGS\"
set "TMP=C:\LOGS\"
if not exist %LogPath% md %LogPath%
(
for /f "tokens=*" %%a in ('dir /b/s/a-d c:\users\%UserName%\prefs5.js') do Set $Path=%%a
for /f "delims=" %%a in ('dir /b/s/a-d c:\users\%UserName%\prefs5.js') do echo %%a
)>%LogPath%\%UserName%.log
echo %$Path%
Set infile=%$Patch%
Set find="user_pref("network.cookie.prefsMigrated",*"
Set replace="user_pref("network.cookie.prefsMigrated", true);"
set COUNT=0
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
echo !TMPR!>>%TMP%\TMP.TXT
)
move %TMP%\TMP.TXT %infile%
pause
Смысл скрипта следующий:
1) Ищем на машине файл prefs5.js
2) Путь к файлу записываем в переменную $Path
3) Ищем в файле строку "user_pref("network.cookie.prefsMigrated",*" и заменяем её строкой "user_pref("network.cookie.prefsMigrated", true);"
Подскажите пожалуйста, что не правильно делаю?
Опишите, что Вы хотели получить. Тогда можно будет говорить о «так» или «не так».
POSTREALITY
01-11-2016, 18:28
Опишите, что Вы хотели получить. Тогда можно будет говорить о «так» или «не так». »
Смысл скрипта такой:
У меня есть несколько терминальных серверов, на каждом сервере по 25-30 пользователей. Теперь, хочу их всех завернуть через проксю. С IE и Хромом справился при помощи групповых политик, а с FireFox не получается, так как он настройки прокси тянет не с системных настроек, а из своего файла prefs.js (в коде указан prefs5.js, так как не экспериментирую на боевом файле а создал тестовый).
В этом файле prefs.js каждая настройка выведена в отдельную строку, итого мне надо поменять 18 строк, всего в файле их более 50. Строки сами по себе не статичны по вертикали, по этому по числовому значению (положению) строки вылавливать не получится, только по конкретному тексту в строке.
Данный CMD`шник хочу положить в общую автозагрузку, чтобы пользователь, при логине, автоматически получал правильные настройки для FF.
Алгоритм скрипта такой:
1) Ищем на машине файл prefs.js. Он обычно размещается по пути C:\Users\%USERNAME%\AppData\Roaming\Mozilla\Firefox\Profiles\giajzzyj.default\prefs.js, но имя каталога giajzzyj.default не постоянное, по этому скрипту надо обязательно файл именно искать. Указать сразу конкретный путь к файлу не получится, потому что у одного пользователя каталог называется giajzzyj.default, а у другого lsnrbgfyt.default.
2) После того как обнаруживаем файл, путь к файлу записываем в переменную $Path и в файл %UserName%.log (это я для себя, по первому времени вести такой небольшой лог и отслеживать как отрабатывает скрипт).
3) Ищем в файле строку "user_pref("network.cookie.prefsMigrated",*" и заменяем её строкой "user_pref("network.cookie.prefsMigrated", true);" . Дело в том, что в первоначальном файле значения не правильные, по этому в set find в конце строки указываю *, чтобы скрипт понимал что удалять надо до конца строки а не до запятой как в конкретном примере. Всего в файле надо заменить 18 строк.
Спасибо большое!
Будет ли у Вас в каких-либо значениях user_pref кириллица?
Указать сразу конкретный путь к файлу не получится, потому что у одного пользователя каталог называется giajzzyj.default, а у другого lsnrbgfyt.default. »
Пути к профилям, в том числе и к профилю по умолчанию (который может быть отличен от *.default), хранятся в файле %AppData%\Mozilla\Firefox\profiles.ini.
POSTREALITY
02-11-2016, 11:46
Будет ли у Вас в каких-либо значениях user_pref кириллица? »
Нет, только значения true и false, и ip адреса, вот все значения которые буду править, точнее это уже правильные значения которые буду подставлять в изначальный файл:
user_pref("network.cookie.prefsMigrated", true);
user_pref("network.predictor.cleaned-up", true);
user_pref("network.proxy.backup.ftp", "10.0.2.5");
user_pref("network.proxy.backup.ftp_port", 3128);
user_pref("network.proxy.backup.socks", "10.0.2.5");
user_pref("network.proxy.backup.socks_port", 3128);
user_pref("network.proxy.backup.ssl", "10.0.2.5");
user_pref("network.proxy.backup.ssl_port", 3128);
user_pref("network.proxy.ftp", "10.0.2.5");
user_pref("network.proxy.ftp_port", 3128);
user_pref("network.proxy.http", "10.0.2.5");
user_pref("network.proxy.http_port", 3128);
user_pref("network.proxy.share_proxy_settings", true);
user_pref("network.proxy.socks", "10.0.2.5");
user_pref("network.proxy.socks_port", 3128);
user_pref("network.proxy.ssl", "10.0.2.5");
user_pref("network.proxy.ssl_port", 3128);
user_pref("network.proxy.type", 1);
Пути к профилям, в том числе и к профилю по умолчанию (который может быть отличен от *.default), хранятся в файле %AppData%\Mozilla\Firefox\profiles.ini »
Да, но мне править файл profiles.ini не надо, надо править файл prefs.js, а в profiles.ini он не указан.
Спасибо!
Нет, »
Ясно.
Да, но мне править файл profiles.ini не надо, надо править файл prefs.js, а в proiles.ini он не указан. »
Там перечислены профили и пути к ним. Именно там будут находиться файлы prefs.js.
POSTREALITY
02-11-2016, 12:17
Там перечислены профили и пути к ним. Именно там будут находиться файлы prefs.js. »
А, я понял к чему Вы это говорите. Да, правильно, но с этим моментом я уже разобрался. Верхняя часть скрипта, а именно:
set "LogPath=C:\LOGS\"
if not exist %LogPath% md %LogPath%
(
for /f "tokens=*" %%a in ('dir /b/s/a-d c:\users\%UserName%\prefs5.js') do Set $Path=%%a
for /f "delims=" %%a in ('dir /b/s/a-d c:\users\%UserName%\prefs5.js') do echo %%a
)>%LogPath%\%UserName%.log
Тут я вылавливаю на машине файл prefs.js и записываю путь к нему в файл %UserName%.log и в переменную $Path.
POSTREALITY, профиль может быть в любом доступном месте, не только внутри %UserProfile%.
POSTREALITY
02-11-2016, 13:35
профиль может быть в любом доступном месте, не только внутри %UserProfile%. »
Конкретно в моём случае, файл prefs.js всегда лежит по пути C:\Users\%USERNAME%\AppData\Roaming\Mozilla\Firefox\Profiles\%%%%%.default\prefs.js :)
POSTREALITY
07-11-2016, 12:41
Up :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.