Войти

Показать полную графическую версию : [решено] BAT добавление пути в файл конфигурации


PowerZ
25-03-2014, 12:30
Здравствуйте. Нужна помощь.

Нужен батник, который будет прописывать путь в конфигурационном файле, к папке с программой.

Программа копируется в %APPDATA%\Programma
Есть файл конфигурации %APPDATA%\Programma\config.properties
в котором есть параметр “DirDirectory=”

Нужно чтобы батник считал полный путь %APPDATA%\Programma ,
и прописал путь как “DirDirectory=C:\Users\UserName\AppData\Roaming\Programma\”

Сам батник будет запускаться через GPO.

Georgio
25-03-2014, 15:56
@echo off
(
for /f "tokens=1* delims=:" %%i in ('
findstr /n "^" "%APPDATA%\Programma\config.properties"
') do (
if not "%%j"=="" (
echo.%%j| findstr /iv "DirDirectory="|| (
echo DirDirectory=%APPDATA%\Programma\
)
) else (
echo.
)
)
)>"%APPDATA%\Programma\config_new.properties"
move "%APPDATA%\Programma\config.properties" "%APPDATA%\Programma\config.properties.bak">nul
move "%APPDATA%\Programma\config_new.properties" "%APPDATA%\Programma\config.properties">nul
exit /b

PowerZ
25-03-2014, 17:35
Georgio, Спасибо! Все отрабатывает отлично!

Но только я один момент сразу недоглядел, оказывается, что программа не воспринимает путь как:
DirDirectory=C:\Users\UserName\AppData\Roaming\Programma\

А нужно так:
DirDirectory=C\:\\Users\UserName\AppData\Roaming\Programma\

Подскажите, пожалуйста, как решить подмену?

Georgio
25-03-2014, 18:27
@echo off
(
for /f "tokens=1* delims=:" %%i in ('
findstr /n "^" "config.properties"
') do (
if not "%%j"=="" (
echo.%%j| findstr /iv "DirDirectory="|| (
echo DirDirectory=%APPDATA::\=\:\\%\Programma\
)
) else (
echo.
)
)
)>config_new.properties
move config.properties config.properties.bak>nul
move config_new.properties config.properties>nul
exit /b

PowerZ
25-03-2014, 21:24
Georgio, а как можно привести путь к такому виду:
DirDirectory=C\:\\Users\\UserName\\AppData\\Roaming\\Programma\\

C \\Programma\\ - все понятно, но как быть с преобразованием пути %APPDATA% ?

Софт оказался написанный на Java, и требует везде двойной \\

Georgio
25-03-2014, 21:57
@echo off
setlocal enabledelayedexpansion
(
for /f "tokens=1* delims=:" %%i in ('
findstr /n "^" "config.properties"
') do (
if not "%%j"=="" (
echo.%%j| findstr /iv "DirDirectory="|| (
set var=%APPDATA:\=\\%
echo DirDirectory=!var::=\:!\\Programma\\
)
) else (
echo.
)
)
)>config_new.properties
move config.properties config.properties.bak>nul
move config_new.properties config.properties>nul
endlocal
exit /b

PowerZ
26-03-2014, 14:27
То, что нужно!
Отрабатывает отлично! протестил через GPO на 20 машинах.

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




© OSzone.net 2001-2012