CMD/BAT - Изменение содержимого файла

Ответить
Аватара пользователя
Kr1og5n

CMD/BAT - Изменение содержимого файла

Сообщение Kr1og5n »

Добрый день! Проблема следующая, чтобы программа запустилась мне приходится ежедневно менять в настройках порты (вот такой вот неприятный косяк). Вспомнил про .bat, что им можно автоматизировать процесс. Нужна помощь!



Есть файл system.properties, открывается обычным блокнотом без каких либо проблем. В себе имеет следующие строки:





Код:

Код: Выделить всё

## system.properties
#
# each unifi instance requires a set of ports:
#
# unifi.shutdown.port=8081 # for management purpose
# unifi.http.port=8080     # device inform
# unifi.https.port=8443    # controller UI / API
# portal.http.port=8880    # portal redirect port for HTTP
# portal.https.port=8843   # portal redirect port for HTTPs
# unifi.db.port=27117      # local-bound port for DB server
#
# system_ip=a.b.c.d        # the IP devices should be talking to for inform
# unifi.db.nojournal=false # disable mongodb journaling
# unifi.db.extraargs       # extra mongod args
#
# 
#
#Sun May 19 08:09:58 UTC 2013
is_default=false
portal.http.port=8860
portal.https.port=8861
unifi.db.port=27117
unifi.http.port=8062
unifi.https.port=8463
unifi.shutdown.port=8081
uuid=0c7cea27-e831-4058-997f-6087b247e2ca

Так вот необходимо строки:





Код:

Код: Выделить всё

portal.http.port=8860
portal.https.port=8861
unifi.http.port=8062
unifi.https.port=8463

ежедневно при включении ПК менять на что-нибудь другое, например:





Код:

Код: Выделить всё

portal.http.port=8870
portal.https.port=8871
unifi.http.port=8072
unifi.https.port=8473

И зациклить это таким образом, чтобы через день была, допустим, 6-ка в портах, а другой 7-ка и они чередовались.

А в конце сделать запуск самой программы:





Код:

Код: Выделить всё

C:\Windows\System32\javaw.exe -jar "C:\Users\User\Ubiquiti UniFi\lib\ace.jar" ui

Так как операция разовая и вообще в первые такое понадобилось и срочно осилить такую схему сам не могу за короткий срок, может кто-нибудь поможет...

Заранее спасибо!!!
Аватара пользователя
Foreigner

Re: CMD/BAT - Изменение содержимого файла

Сообщение Foreigner »

Например так:



Код:

Код: Выделить всё

@echo off
setlocal
for /f %%i in ('findstr /v "#" file.ini') do set "_$%%i"
set /a n=%date:~0,2% %% 2
set /a _$portal.http.port=8860+%n%0
set /a _$portal.https.port=8861+%n%0
set /a _$unifi.http.port=8062+%n%0
set /a _$unifi.https.port=8463+%n%0
1>file.tmp (
    findstr "#" file.ini
    for /f "tokens=2 delims=$" %%i in ('set _$') do echo %%i
)
move file.tmp file.ini
C:\Windows\System32\javaw.exe -jar "C:\Users\User\Ubiquiti UniFi\lib\ace.jar" ui

В начале месяца 31-ое - 1-ое будет 7
Аватара пользователя
Iska

Re: CMD/BAT - Изменение содержимого файла

Сообщение Iska »

Цитата Kr1og5n:



чтобы через день была, допустим, 6-ка в портах, а другой 7-ка и они чередовались.
CMD/BAT - Изменение содержимого файла




В произвольной папке из файла оригинальной конфигурации «system.properties» создаёте две копии — файлы «system.properties.01» и «system.properties.02». В одном из них указываете одни потребные строки, в другом — другие. Рядом со скопированными файлами конфигураций создаёте следующий пакетный файл:


читать дальше »




Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
set sFileSource01=%~dp0system.properties.01
set sFileSource02=%~dp0system.properties.02
set sFileDest=%ProgramFiles%\Ubiquiti\system.properties
if exist "%sFileSource01%" (
	if exist "%sFileSource02%" (
		if exist "%sFileDest%" (
			>nul fc.exe /b "%sFileSource01%" "%sFileDest%" && (
				>nul copy /y "%sFileSource02%" "%sFileDest%"
			) || (
				>nul copy /y "%sFileSource01%" "%sFileDest%"
			)
		) else (
			echo Destination file [%sFileDest%] not found.
		)
	) else (
		echo Source file 02 [%sFileSource02%] not found.
	)
) else (
	echo Source file 01 [%sFileSource01%] not found.
)
"%SystemRoot%\System32\javaw.exe" -jar "C:\Users\User\Ubiquiti UniFi\lib\ace.jar" ui
endlocal
exit /b 0





Вместо выделенного в пакетном файле пути укажите свой путь к файлу оригинальной конфигурации «system.properties». Затем добавляете пакетный файл в Планировщик задач, указывая его запуск при старте машины.
Аватара пользователя
Kr1og5n

Re: CMD/BAT - Изменение содержимого файла

Сообщение Kr1og5n »

Премного благодарен! Сегодня закину файлик, завтра проверю как работает.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»