
[已解決]BAT腳本關于goto跳轉的問題求助BAT小白。想弄個交互式更改計算機名的批處理,當判斷到計算機名的字符串大于15個字符時跳轉到腳本開頭重新要求用戶數據計算機名,直到符合要求后執行后面的更改注冊表操作。腳本如下所示,但現在無論是否大于15個字符只要按回車都會繼續執行后面的腳本,還請大神們幫忙看下問題出在哪里。
- :gethostname
- cls
- title 初始化:更改計算機名
- set /p cmpy=請鍵入設備所屬的公司名(限制5個字符):
- set /p usag=請鍵入設備的用途(限制5個字符):
- set srvnm=adv-%cmpy%-%usag%
- set /p =該設備將被重命名為:%srvnm%,請確保其不多于15個字符。 <nul & echo,
- call:GetStrLen %srvnm%
- if %n% gtr 15 goto gethostname
- echo 正在更新注冊表。
- reg add HKEY_LOCAL_MACHINESystemCurrentControlSetControlComputerNameActiveComputerName /v ComputerName /t reg_sz /d %name% /f >nul 2>nul
- reg add HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTcpipParameters /v NV Hostname /t reg_sz /d %name% /f >nul 2>nul
- reg add HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTcpipParameters /v Hostname /t reg_sz /d %name% /f >nul 2>nul
- echo 注冊表更新完成。
- goto:eof
- ::獲取字符串長度
- :GetStrLen
- setlocal enabledelayedexpansion
- set /a max=8190,min=0
- for /l %%a in (1,1,14) do (
- set /a num=(max+min)/2
- for /f delims= %%b in (!num!) do (
- if !str:~%%b! equ (set /a max=num) else set /a min=num
- )
- )
- if !str:~%num%! neq set /a num+=1
- endlocal & set %1=%num%
- pause>nul
nclick="copycode($('code0'));">復制代碼