Author Topic: Использование переменных среды Windows  (Read 1499 times)

0 Members and 1 Guest are viewing this topic.

wireshark

  • Освоившийся
  • **
  • Posts: 49
    • View Profile
Подскажите пожалуйста как лучше решить задачу:
Есть несколько машин на которых работает Clickermann, в процессе работы надо вести лог, чтобы не собирать логи со всех машин пишу его в общий файл на шаре в сети но, чтобы идентифицировать от какой машины пришла запись нужно в лог передавать значение %COMPUTERNAME% или делать отдельный скрипт работы для каждой машины, что совсем не хочется, поскольку так я выкладываю один скрипт в сеть и при обновлении все просто его берут.
Соответственно если делать скрины, то потом непонятно от какой машины они пришли.
Как можно решить эту задачу? Пробовал прописывать переменные в виде %COMPUTERNAME% в префиксы названий  и тд, но они не обрабатываются и передаются без подстановки значения.

Сейчас задача решается через запуск батника который уже пишет нужную информацию, но такое решение не совсем подходит.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Использование переменных среды Windows
« Reply #1 on: January 13, 2017, 08:02:22 AM »
Ну без батника тут не обойтись. Но имя компа вроде не должно меняться, поэтому достаточно 1 раз его получить, записать в файл и уже просто читать его от туда.

Вот рабочий пример. Если файла "ComputerName.txt" нет то получаем имя, в дальнейшем просто читаем имя из файла.

Code: (clickermann) [Select]
IF(TFCOUNT("ComputerName.txt") > 0)
   $compName = TFREAD("ComputerName.txt", 1)
ELSE
   TFWRITE("CN.bat", "Echo %COMPUTERNAME%>>ComputerName.txt")
   WAITMS(100)
   EXECUTE("CN.bat")
   WAITMS(100)
   $compName = TFREAD("ComputerName.txt", 1)
   TFCLEAR("CN.bat", 1)
END_IF

LOGWRITE ("Имя компа: ", $compName)
LOGSHOW (1)

HALT


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Использование переменных среды Windows
« Reply #2 on: January 13, 2017, 12:48:34 PM »
Так имя на русском не получить. И удаление батника лучше прописать в самом батнике в конце, тогда не нужно следить и не будет блокировки при фризе.
Code: (clickermann) [Select]
IF(TFCOUNT("ComputerName.txt") = 0)
    TFWRITE("CN.bat", "chcp 1251>nul")
    TFWRITE("CN.bat", "Echo %COMPUTERNAME%>>ComputerName.txt")
    TFWRITE("CN.bat", "del /F /S CN.bat")
    WAITMS(100)
    EXECUTE("CN.bat")
    WAITMS(100)
END_IF
$compName = TFREAD("ComputerName.txt", 1)

LOGWRITE ("Имя компа: ", $compName)
LOGSHOW (1)

HALT

Если же все имена на английском, то батник не нужен, сразу командная строка
Code: (clickermann) [Select]
EXECUTE("cmd.exe", STRCONCAT(" /C Echo %COMPUTERNAME%>>ComputerName.txt"))
WAITMS(100)
LOGWRITE ("Имя компа: ", TFREAD("ComputerName.txt", 1))
LOGSHOW (1)

HALT


wireshark

  • Освоившийся
  • **
  • Posts: 49
    • View Profile
Re: Использование переменных среды Windows
« Reply #3 on: January 14, 2017, 10:01:28 AM »
Спасибо!