REM Turn echo off.
@echo off
REM Change directory to Firefox folder, this is where the profiles.ini file exist.
cd /d "%appdata%\Mozilla\Firefox" || exit /b 1
REM Read profiles.ini and call :profiledir with the value of each path key found.
for /f "tokens=1* delims==" %%A in (profiles.ini) do (
if /i "%%~A" == "path" call :profiledir "%%~B"
)
exit /b
:profiledir
REM Set local environment. Any settings i.e cd will be temporary.
setlocal
REM Check if ".default" in path to continue.
echo "%~1"| find ".default" || exit /b 1
REM Change to the profile dir.
cd /d "%~1" || exit /b 1
REM Copy prefs.js to current dir.
echo copy /y "path\to\my\prefs.js" "prefs.js"
exit /b
Файл с именем profiles.ini
содержит пути к папкам профиля.
Файл в формате ini, и вы можете найти значение пути для каждого ключа пути.
У вас может быть много папок профиля, поэтому я использую find ".default"
продолжить, только если папка содержит эту строку.
Примечание:
- Если пути являются сетевыми путями, возможно, потребуется использовать
pushd
и popd
вместо cd
.
Описание операции
REM Change directory to Firefox folder, this is where the profiles.ini file exist.
cd /d "%appdata%\Mozilla\Firefox" || exit /b 1
Это меняет текущий каталог. ||
- команда запуска с правой стороны
если команда слева не удалась. В случае неудачи выйдет с уровнем ошибки 1.
Примечание. Используйте cd /?
и exit /?
для справки по синтаксису.
REM Read profiles.ini and call :profiledir with the value of each path key found.
for /f "tokens=1* delims==" %%A in (profiles.ini) do (
if /i "%%~A" == "path" call :profiledir "%%~B"
)
Этот цикл for
читает файл profiles.ini. Набор разделителей =
, который
INI-файл используется для отделения ключа от значения. Токен 1
будет
ключ помещается в %%A
, а токен *
будет значением, сохраненным в %%B
.
Если ключ равен ключу с именем path
, вызовите метку с именем
:profiledir
с 1-м аргументом значения пути, который должен быть путем
в папку профиля.
Примечание. Используйте for /?
и call /?
для справки по синтаксису.
:profiledir
Это названный ярлык. Вызов метки может передавать аргументы, которые
делает его удобным для прохождения чего-то вроде пути. аргументы
принимаются в формате %1
, %2
... %9
. Тильда т. Е. %~1
удаляет внешние двойные кавычки. Вызываемые метки возвращаются обратно к абоненту
когда закончите.
REM Check if ".default" in path to continue.
echo "%~1"| find ".default" || exit /b 1
"%~1"
- первый цитируемый аргумент. Это отражено в команде find
и если
.default
найдено, затем будет продолжено. |
известен как труба, где
стандартный вывод echo
передается стандартному find
.
Примечание: используйте find /?
для справки по синтаксису.
REM Change to the profile dir.
cd /d "%~1" || exit /b 1
То же, что и основной код cd
, за исключением того, что он установлен локально, поэтому действует только с
вызываемый ярлык.
REM Copy prefs.js to current dir.
echo copy /y "path\to\my\prefs.js" "prefs.js"
Аргумент /y
copy
позволяет перезаписывать без подтверждения, поэтому
del
устарел.
Примечание. Используйте copy /?
для справки по синтаксису.
Наконец: удалите echo
перед командой copy
, если убедитесь, что она показывает, что команда копирования в порядке.