Precisa truncar a variável% username% no windows 7 a sete caracteres

4

Eu uso um script que gera um nome de sessão para fora das sessões do AS400 com base no sistema% username%, o problema é que, se o nome de usuário tiver mais de 7 caracteres, a conexão falhará. Os nomes das sessões recebem um caractere acrescentado e a conexão suporta um total de 8 caracteres.

Alguma idéia?

    
por willrun4fun 05.09.2012 / 15:32

2 respostas

13

Se bem entendi, a melhor maneira de fazer isso será selecionar uma substring do nome de usuário. Isso pode ser feito da seguinte forma:

%username:~0,7%

Isso selecionará os sete primeiros caracteres do nome de usuário. Se você precisar truncar de uma maneira diferente, o primeiro número (0) será a posição inicial da subsequência e o segundo número (7) será o número de caracteres a serem selecionados.

Como EBGreen apontou, existem outras linguagens de script além do lote. Se você estiver usando o Powershell, a sintaxe seria:

$env:UserName.Substring(0,7)

Se você estiver usando o VBScript, a sintaxe seria:

WScript.Echo Left(CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERNAME%"), 7)
    
por 05.09.2012 / 15:35
1

O modo limpo seria criar uma nova variável de ambiente, que é lida no servidor de diretório durante o logon e armazenada no ambiente do usuário.

Isso permitirá que você altere a função usada para gerar os nomes de 7 caracteres em um local central em vez de em todos os scripts e também permite verificar a exclusividade durante a criação da conta.

    
por 05.09.2012 / 19:53