Здравствуйте, дорогие коллеги ...
У меня следующая проблема.Мне нужно изменить одно значение в текстовом файле pref.js (принадлежит FireFox)
Если этот файл содержит строку:
user_pref("network.proxy.type", 1);
, я должен изменить его на:
user_pref("network.proxy.type", 0);
Единственный способ, который, кажется, работает (в пакетном файле), это скопировать этот файл в новую "строку за строкой", и если я найду строку "network.proxy.type", я не копирую ее, а вместо этогоЯ записываю в новый файл нужную строку.
Я делаю это так:
cls
@echo off
set searchedString=user_pref("network.proxy.type"
set replaceSearchedWith=user_pref("network.proxy.type",0^^);
for /F "tokens=1,* delims=," %%j in (FileIn.txt) do (
if %%j==%searchedString% (
echo %replaceSearchedWith% >> FileOut.txt
)
if not %%j==%searchedString% (
echo %%j,%%k >> FileOut.txt
)
)
Это работает почти хорошо.Единственная проблема заключается в том, что исходный файл выглядит так:
# Mozilla User Preferences
/* Do not edit this file.
*
* If you make changes to this file while the application is running,
* the changes will be overwritten when the application exits.
*
* To make a manual change to preferences, you can visit the URL about:config
* For more information, see http://www.mozilla.org/unix/customizing.html#prefs
*/
user_pref("accessibility.typeaheadfind.flashBar", 0);
user_pref("app.update.enabled", false);
...
Как видите, в начале этого файла есть комментарии.И мой алгоритм добавляет запятую (,) в конец последней строки комментария.Затем это выглядит так:
# Mozilla User Preferences,
/* Do not edit this file.,
*,
* If you make changes to this file while the application is running,
* the changes will be overwritten when the application exits.,
*,
* To make a manual change to preferences, you can visit the URL about:config
* For more information, see http://www.mozilla.org/unix/customizing.html#prefs
*/,
user_pref("accessibility.typeaheadfind.flashBar", 0);
user_pref("app.update.enabled", false);
...
Это потому, что моя программа объединяет токены следующим образом:
echo %%j,%%k >> FileOut.txt
А теперь последний вопрос
Есть ли способ, как получить всю текстовую строку в моем цикле for, чтобы мне не приходилось объединять строки?
Или есть лучший способ выполнить свою работу?
Я думаю, что я мог бы пропустить первые 12 строк, но я не уверен, что на каждом компьютере этот комментарий будет занимать ровно 12 строк.Этот скрипт следует использовать на сотнях компьютеров в нашей сети.
Заранее спасибо