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

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

PowerZ 25-03-2014 12:30 2328310

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

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

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

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

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

Georgio 25-03-2014 15:56 2328397

Код:

@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 2328422

Georgio, Спасибо! Все отрабатывает отлично!

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

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

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

Georgio 25-03-2014 18:27 2328452

Код:

@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 2328517

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

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

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

Georgio 25-03-2014 21:57 2328537

Код:

@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 2328848

То, что нужно!
Отрабатывает отлично! протестил через GPO на 20 машинах.

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


Время: 06:49.

Время: 06:49.
© OSzone.net 2001-