題 需要將Windows 7中的%username%變量截斷為七個字符


我使用的腳本根據系統%username%為AS400會話生成會話名稱,問題是如果用戶名長度超過7個字符,則連接將失敗。 會話名稱附加一個字符,連接支持總長度為8個字符。

有任何想法嗎?


4
2017-09-05 13:32


起源




答案:


如果我理解正確,最好的方法是選擇用戶名的子字符串。這可以這樣做:

%username:~0,7%

這將選擇用戶名的前七個字符。如果您需要以不同的方式截斷,則第一個數字(0)是子字符串的起始位置,第二個數字(7)是要選擇的字符數。

正如EBGreen指出的那樣,除了批處理之外還有其他腳本語言。如果您使用的是Powershell,則語法為:

$env:UserName.Substring(0,7)

如果您使用的是VBScript,則語法為:

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

13
2017-09-05 13:35



我假設腳本語言和SaintWacko一樣是批處理語言。儘管如此,在Powershell中你可以做$ env:UserName.Substring(0,7) - EBGreen
或者以防萬一,在VBScript:WScript.Echo Left(CreateObject(“WScript.Shell”)。ExpandEnvironmentStrings(“%USERNAME%”),7) - EBGreen
謝謝!我們能夠使用vbscript選項來實現它。 - willrun4fun


乾淨的方法是創建一個新的環境變量,在登錄期間從目錄服務器讀取並存儲在用戶的環境中。

這將允許您更改用於在中心位置而不是在所有腳本中生成7個字符的名稱的功能,還允許您在帳戶創建期間驗證唯一性。


1
2017-09-05 17:53