вторник, 28 апреля 2015 г.

[успешно] "SET /A" в составе цикла "FOR"

Задача:
В батнике, в составе цикла FOR команда "SET /A ..." с последующим выводом результата (внутри того же цикла "FOR") почему-то не обрабатывается.

Решение:
Для вывода результата нужно обращаться к переменной через восклицательный знак "!" (см. строку с "echo") и обязательно в режиме "ENABLEDELAYEDEXPANSION":
BAT-вариант:
SETLOCAL ENABLEDELAYEDEXPANSION
SET myCount=0
FOR /F "tokens=*" %%i in (my_list_file.txt) DO (
SET /A myCount+=1
ECHO !myCount!
)

пятница, 17 апреля 2015 г.

Список портов (Windows, Linux)

Windows:
netstat -anb

Linux:
netstat -anp

Управление виртуальной машиной VirtualBox в консоли

Просмотр списка зарегистрированных виртуальных машин:
vboxmanage list vms
Запуск без окна (в фоне):
vboxheadless -s <VM_name>
Закрыть, сохранив состояние:
vboxmanage controlvm <VM_name> savestate
Закрыть, принудительно отключив питание:
vboxmanage controlvm <VM_name> poweroff
Закрыть, симулировав однократное нажатие на кнопку питания (дальше уже зависит от настроек ОС: либо "спросить о действии", либо "завершить работы", либо "ничего не делать"):
vboxmanage controlvm <VM_name> acpipowerbutton

четверг, 16 апреля 2015 г.

Запуск СП АЦК-ГЗ с предпроверкой статуса Firebird

Интересная задача попалась:
при запуске Windows-сервера с автоматическим запуском СП АЦК-Госзаказ периодически СП завершается с ошибкой:
org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544721. Unable to complete network request to host "localhost"., error code: HY000
Reason: Unable to complete network request to host "localhost".
Данная ошибка возникает из-за того, что СП пытается запустится в тот момент, когда служба Firebird еще не успела запустится.

Решение: перед запуском СП проверяем состояние службы Firebird, если не запущена, то запускаем, затем стартуем СП.
BAT-вариант:

@ECHO OFF
REM Inspired by http://forum.oszone.net/nextoldesttothread-273062.html

SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET daAzkPath=C:\home\soft\azk-gz-lic\1.26.0.180\
SET daAzkFile=StartServer.bat
SET daSvcName=FirebirdServerFB21
:begin
FOR /f "usebackq" %%i IN (`wmic Service where "Name='%daSvcName%'" get State /value 2^>nul ^| find /i "State"`) DO SET b%%~i
IF NOT DEFINED bState echo %daSvcName% not found &GOTO end
IF NOT %bState% == Running (SC START %daSvcName% &GOTO begin)
CD %daAzkPath%
CALL %daAzkFile%
:end
ENDLOCAL

Данные о временных зонах для OEL

Проверяем правильность универсального времени:
date -Ru
Thu, 16 Apr 2015 09:49:22 +0000
Проверяем правильность времени в текущем часовом поясе (пример для UTC+8):
date -R
Thu, 16 Apr 2015 17:49:28 +0800

При необходимости устанавливаем данные о часовых зонах:
yum install tzdata
либо:
pirut

четверг, 2 апреля 2015 г.

WMIC

WMIC - Windows Management Instrumentation Command-line.
Пример использования для получения статуса службы:

C:\>wmic Service where "Name='FirebirdServerFB25'" get State /value


State=Running

Зима опять пришла

Вирус скрывает файлы

Последнее время участились обращения от друзей по поводу вируса, который скрывает файлы на флешке.
На всякий случай, вот команда для Windows, которая снимает признаки "Скрытый" и "Системный" с файлов:
attrib -S -H /S /D *

Архив