Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   CMD не могу осилить многофункциональный скрипт. (http://forum.oszone.net/showthread.php?t=320349)

POSTREALITY 01-11-2016 15:43 2683746

CMD не могу осилить многофункциональный скрипт.
 
Товарищи, здравствуйте.
Подскажите пожалуйста, что в скрипте не так?
Код:

@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);"

Подскажите пожалуйста, что не правильно делаю?

Iska 01-11-2016 17:46 2683767

Опишите, что Вы хотели получить. Тогда можно будет говорить о «так» или «не так».

POSTREALITY 01-11-2016 18:28 2683776

Цитата:

Цитата Iska
Опишите, что Вы хотели получить. Тогда можно будет говорить о «так» или «не так». »

Смысл скрипта такой:
У меня есть несколько терминальных серверов, на каждом сервере по 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 строк.

Спасибо большое!

Iska 02-11-2016 09:17 2683918

Будет ли у Вас в каких-либо значениях user_pref кириллица?

Цитата:

Цитата POSTREALITY
Указать сразу конкретный путь к файлу не получится, потому что у одного пользователя каталог называется giajzzyj.default, а у другого lsnrbgfyt.default. »

Пути к профилям, в том числе и к профилю по умолчанию (который может быть отличен от *.default), хранятся в файле %AppData%\Mozilla\Firefox\profiles.ini.

POSTREALITY 02-11-2016 11:46 2683962

Цитата:

Цитата Iska
Будет ли у Вас в каких-либо значениях 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);

Цитата:

Цитата Iska
Пути к профилям, в том числе и к профилю по умолчанию (который может быть отличен от *.default), хранятся в файле %AppData%\Mozilla\Firefox\profiles.ini »

Да, но мне править файл profiles.ini не надо, надо править файл prefs.js, а в profiles.ini он не указан.

Спасибо!

Iska 02-11-2016 11:59 2683970

Цитата:

Цитата POSTREALITY
Нет, »

Ясно.

Цитата:

Цитата POSTREALITY
Да, но мне править файл profiles.ini не надо, надо править файл prefs.js, а в proiles.ini он не указан. »

Там перечислены профили и пути к ним. Именно там будут находиться файлы prefs.js.

POSTREALITY 02-11-2016 12:17 2683979

Цитата:

Цитата Iska
Там перечислены профили и пути к ним. Именно там будут находиться файлы 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.

Iska 02-11-2016 13:06 2684001

POSTREALITY, профиль может быть в любом доступном месте, не только внутри %UserProfile%.

POSTREALITY 02-11-2016 13:35 2684016

Цитата:

Цитата Iska
профиль может быть в любом доступном месте, не только внутри %UserProfile%. »

Конкретно в моём случае, файл prefs.js всегда лежит по пути C:\Users\%USERNAME%\AppData\Roaming\Mozilla\Firefox\Profiles\%%%%%.default\prefs.js :)

POSTREALITY 07-11-2016 12:41 2685393

Up :)


Время: 21:02.

Время: 21:02.
© OSzone.net 2001-