2017-02-20 115 views
0

所以我在我的批處理代碼中有一個「set/p」行,但不管我似乎做了什麼,它總是返回空白。批量「set/p」返回空白

我的代碼:

@echo off 

IF NOT "%1" == "admin" (
    ECHO 'Not admin' 
    Pushd "%~dp0" 
    copy %0 C:\ 

    runas /user:administrator "C:\%~n0.bat admin %COMPUTERNAME%" 
) 

IF "%1" == "admin" (

    set /p user= User initials: 

    ECHO Test: %user% 

    wmic computersystem where caption='%2' call rename 'GLOS-%user%01' 
    net localgroup administratorer %user% /add 
    manage-bde -off C: 
    pause 
    start /b "" cmd /c del "%~f0"&exit /b 
) 
pause 

任何人有任何線索,爲什麼出現這種情況?

在此先感謝!

+0

我想做的一個觀察,如果用戶沒有管理權限,他們將不可能有必要的權限複製到保護區系統驅動器的根目錄。 – Compo

+0

這不是我使用它的問題,它複製正常並啓動新的bat文件,它甚至在刪除它之後。 問題是本地管理員無法訪問bat文件所在的驅動器,我們不希望將它複製粘貼到每臺我們必須安裝的PC上:) –

+1

然後,您需要獲取擺脫兩行,'IF「%1」==「admin」('和第二行''''')。 – Compo

回答

1

你必須在腳本的開頭添加這一目的(例如右下方@eho off):

SETLOCAL EnableDelayedExpansion 

,並進一步,你必須圍繞用戶與...!而不是%...%:

ECHO Test: !user! 

就是這樣。欲瞭解更多信息,請查詢this website

+1

這樣做了,謝謝! :) 但是我確實按照@Compo的建議去掉了第二條if語句,但由於我不能接受他的評論作爲答案,我會接受它,因爲它的工作原理也是如此。 –