4

Я использую сценарий, который генерирует имя сеанса для сеансов AS400 на основе системного% username%, проблема заключается в том, что если длина имени пользователя превышает 7 символов, соединение не будет установлено. К именам сессий добавляется один символ, и соединение поддерживает общую длину 8 символов.

Есть идеи?

2 ответа2

13

Если я правильно понимаю, лучший способ сделать это будет выбрать подстроку имени пользователя. Это можно сделать так:

%username:~0,7%

Это выберет первые семь символов имени пользователя. Если вам когда-либо понадобится усечь другим способом, первое число (0) - это начальная позиция подстроки, а второе число (7) - это количество символов для выбора.

Как отметил EBGreen, есть и другие языки сценариев, кроме пакетных. Если вы используете Powershell, синтаксис будет следующим:

$env:UserName.Substring(0,7)

Если вы используете VBScript, синтаксис будет:

WScript.Echo Left(CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERNAME%"), 7)
1

Чистым способом было бы создать новую переменную среды, которая будет считываться с сервера каталогов во время входа в систему и храниться в среде пользователя.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .