Переменная набора cmd /C

Коротко: я пытаюсь сделать командный скрипт в 1 строку, который устанавливает и использует переменную. Прямо сейчас я придумал:

cmd /C "set var=127.0.0.1 & echo %var%"

Я ожидал бы, что это выведет 127.0.0.1, но вместо этого он печатает%var%.

Длинное: я использую keepass в качестве менеджера паролей и пытаюсь заставить его автоматически запустить сеанс RDP для меня. Я вставил следующее в URL:

cmd://cmd /C "cmdkey /generic:TERMSRV/127.0.0.1 /user:{USERNAME} /pass:{PASSWORD} & mstsc.exe /v:127.0.0.1 & cmdkey /delete:TERMSRV/127.0.0.1"

Это работает, но если мне нужно обновить ipaddress, я должен коснуться 3 мест, а не только 1. Я попытался изменить его на следующее, но это не сработало:

cmd://cmd /C "set sServer=127.0.0.1 & cmdkey /generic:TERMSRV/%sServer% /user:{USERNAME} /pass:{PASSWORD} & mstsc.exe /v:%sServer% & cmdkey /delete:TERMSRV/%sServer%"

1 ответ

Решение

Комментарий josefZ работал отлично. Следующая команда может быть помещена в поле "URL:" в keepass. Когда вы дважды щелкнете по URL-адресу или сделаете что-нибудь еще, что запустит URL-адрес, он автоматически запустит RPD и зарегистрирует вас.

cmd://cmd /C "for /F "tokens=*" %G in ("127.0.0.1") do cmdkey /generic:TERMSRV/%G /user:{USERNAME} /pass:{PASSWORD} & mstsc.exe /v:%G & cmdkey /delete:TERMSRV/%G"

Я проверил это, используя RDPing как для Windows, так и для Linux.

Другие вопросы по тегам