переменные пакетного файла - PullRequest
1 голос
/ 27 января 2020

Попытка записи клиентского IP-адреса пользователя для удаленного сеанса. В настоящее время есть немного времени регистрации записи командного файла и имя хоста. Необходимо также включить IP-адрес клиента;

В настоящее время используется это;

reg query "HKEY_CURRENT_USER\Volatile Environment" /s > %temp%\IPINFO.txt
findstr /L ViewClient_IP_Address %temp%\IPINFO.txt > %temp%\IPRESULTS.txt
FOR /F “tokens=* delims= ” %%a in (%temp%\IPRESULTS.txt) do set IP=%%a
del %temp%\IPRESULTS.txt
set IP=%IP%
echo Login ,%Date%,%Time%,%computername%,%clientname%,%IP% >> Y:\%username%.csv

Ключ реестра viewclient_ip_Address содержит необходимую информацию, но папка реестра, в которой он находится, каждый раз меняет имя, поэтому Мне нужно экспортировать весь каталог, а затем отфильтровать по самому ключу.

Мне просто нужно добавить информацию из этого IPRESULTS.txt в мой конечный файл .csv, но я не могу написать его. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 27 января 2020

Это то, что вы ищете? ( запускает команду и анализирует ее вывод в памяти)

For /F "EOL=HTokens=2*" %%H In ('^""%__AppDir__%reg.exe" Query "HKCU\Volatile Environment" /V ViewClient_IP_Address 2^>NUL^"')Do Set "IP=%%~I"

Чтобы узнать больше о том, как использовать reg.exe с запросом откройте окно командной строки и введите reg query /?

Если, как вы указали в своем вопросе, требуемое значение и данные находятся в HKEY_CURRENT_USER\Volatile Environment, но в переменной / неизвестном подразделе имя, справочная информация должна показать вам, что вы можете использовать опцию /F, чтобы найти ваше имя известного значения, ViewClient_IP_Address, если вы указываете, что поиск должен найти значение с помощью /V, он должен получить строку, которую вы need.

Например, в командной строке:

Reg Query "HKCU\Volatile Environment" /S /F "ViewClient_IP_Address" /V

Возвращает:

C:\Users\smith_ll>Reg Query "HKCU\Volatile Environment" /S /F "ViewClient_IP_Add
ress" /V

HKEY_CURRENT_USER\Volatile Environment\UnknownSubKey
    ViewClient_IP_Address    REG_SZ    192.168.1.15

End of search: 1 match(es) found.

Затем вы можете поместить эту команду в свой и передайте его вывод через find.exe, чтобы изолировать строку, которую вам нужно проанализировать. Например, подчеркивание выглядит уникальным только для нужной вам строки. Поскольку мы уже исключаем любую строку, начинающуюся с H, EOL=H) , она не будет соответствовать строке End of search: 1 match(es) found.:

Пример:

For /F "EOL=HTokens=2*" %%H In ('^""%__AppDir__%reg.exe" Query "HKCU\Volatile Environment" /S /F "ViewClient_IP_Address" /V 2^>NUL^|"%__AppDir__%find.exe" "_"^"')Do @Set "IP=%%~I"

Если вам не нравится супер длинная линия, вы можете разделить ее на несколько с помощью каретки:

For /F "EOL=HTokens=2*" %%H In ('^""%__AppDir__%reg.exe" Query^
 "HKCU\Volatile Environment" /S /F "ViewClient_IP_Address" /V 2^>NUL^
 ^|"%__AppDir__%find.exe" "_"^"')Do @Set "IP=%%~I"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...