USER的ID是否就本機登入的那組帳號?是的話可以利用%USERNAME%來帶帳號...
提供參考
<pre class="c" name="code">
ECHO off
set /p userid=User id :
set /p password=Password :
echo userid=[%userid%],password=[%password%]
利用WINDOWS的本機帳密即可。
也就是在本機建立一個與SERVER相同的帳號,設定與SERVER相同的密碼。
開機時選該帳號登入,此時連線網路磁碟機都不用輸入密碼了。
若曾經定義好虛擬磁碟機,也不用從新連線,開機正確登入後就都已出現。
不知道要如何擷取到使用者所輸入的帳號密碼
為何要擷取使用者帳號密碼? 如果沒有AD那網路磁碟機的權限應該每個使用者都一樣,因為依輸入的帳密權限來取決。
如果有AD環境讀取網路磁碟時,也就不需要輸入帳密。
連接網路磁碟機+anti大的方式
<pre class="c" name="code">
ECHO off
//使用者輸入帳號和密碼
set /p userid=User id :
set /p password=Password :
echo userid=[%userid%],password=[%password%]
//清除現有的網路磁碟機,以免造成衝突
net use /delete * /yes
//設定三個網路磁碟機為X Y Z槽
NET USE X: \\主機名稱或IP\資料夾名稱 /yes
NET USE Y: \\主機名稱或IP\資料夾名稱 /yes
NET USE Z: \\主機名稱或IP\資料夾名稱 /yes
echo.
<pre class="c" name="code">
Option Explicit
On Error Resume Next
Dim net,oUser,oTime
Set net = CreateObject("WScript.Network")
oUser = net.UserName
oTime = Now
Do While oUser = ""
if DateDiff("s",oTime,Now) > 30 then WScript.Quit
WScript.Sleep 1000
oUser = net.UserName
Loop
net.MapNetworkDrive "Q:", "\\ServerName\Share Folder",false,"UserID","Password"
net.MapNetworkDrive "Z:", "\\ServerName\Share Folder",false
net.MapNetworkDrive "Y:", "\\ServerName\Share Folder",false
這個是我在使用的檔案,當使用者登人 AD 時會自己執行,當然要在 AD 中設定好。
存檔時請記得存成 檔案名稱.vbs
可能要先釐清一下,這三個網路磁碟機是連線到同一台SERVER,還是不同台SERVER?
如果是同一台就好辦,下面這樣就可以解決掉
<pre class="c" name="code">@echo OFF
net use X: /d /y > nul
net use y: /d /y > nul
net use z: /d /y > nul
cls
echo.
set /p userid="請輸入帳號: "
echo.
net use x: \\ip\path /user:%userid% *
net use y: \\ip\path
net use z: \\ip\path
但是如果是不同 Server,那我還是會建議讓USER打3次密碼
<pre class="c" name="code">@echo OFF
net use X: /d /y > nul
net use y: /d /y > nul
net use z: /d /y > nul
cls
echo.
set /p userid="請輸入帳號: "
echo.
net use x: \\ip1\path /user:%userid% *
net use y: \\ip2\path /user:%userid% *
net use z: \\ip3\path /user:%userid% *
為什麼不把密碼設到變數中就好呢?
主要是因為如果是採取將密碼設到變數中的方式,雖然的確可以只打一次帳號密碼,
但是必須要注意到,1. 密碼會顯示在螢幕上 2. 如果很湊巧的在某些情況下得以在同一個命令提示字元視窗中輸入了set,那變數內容就都跑出來看光光,包括密碼。
如果不在意上述情況,那也可以是這樣
<pre class="c" name="code">@echo OFF
net use X: /d /y > nul
net use y: /d /y > nul
net use z: /d /y > nul
cls
echo.
set /p userid="請輸入帳號: "
set /p passwd="請輸入密碼: "
echo.
net use x: \\ip1\path /user:%userid% %passwd%
net use y: \\ip2\path /user:%userid% %passwd%
net use z: \\ip3\path /user:%userid% %passwd%
綜合以上大家的回答 ~ 樓主要的應該是不顯示密碼,可以登入不同伺服器的批次檔
不知道用戶端的系統是什麼,如果是 XP 應該還可以使用別的方式,但如果是64位元的話,可以參考以下粗略作法。
<pre class="c" name="code">
@Echo Off
Set PWD=""
Set TIMER=15
Net use x: /d /y > nul
Net use y: /d /y > nul
Net use z: /d /y > nul
Cls
Echo.
Set /p USERID="請輸入帳號: "
:Check
Echo.&Echo 輸入密碼後,請立即按下『確認鍵』,減少密碼洩露之機會...謝謝!!!&Echo.
Ping -n %TIMER% 127.0|Set /p PWD="請輸入密碼: "&Cls>con
Set /p PWD=
Cls
If %PWD%=="" Cls&Echo.&Echo 密碼空白,請重新輸入...&Goto Check
Echo.&Echo 連線中...請稍後!!!&Echo.
Net use x: \\伺服器位置\資料夾名稱 /user:%USERID% %PWD%
Net use y: \\伺服器位置\資料夾名稱 /user:%USERID% %PWD%
Net use z: \\伺服器位置\資料夾名稱 /user:%USERID% %PWD%
上述之方法,只要在15秒內輸入密碼都不會顯示出來,超過的話就...
時間是可以調整的,只是輸入完等待的時間也會變長..QQ
這是參考對岸論壇綜合出來的方式^^"