iT邦幫忙

0

請問批次檔高手!!

ruey 2013-09-25 16:57:0217274 瀏覽

小弟想用批次檔一次連線三個網路磁碟,但只要輸入一次帳密,因為每次執行就要打三次帳密的話,使用者應該會瘋掉;不知道要如何擷取到使用者所輸入的帳號密碼,以便塞到批次檔裡,煩請高手賜教,謝謝。

CalvinKuo iT邦大師 7 級 ‧ 2013-09-25 17:24:00 檢舉
看樣子是沒有AD,有的話,那就更怪。
印象中XP環境中,要連網路磁碟的主機有同樣帳密是不需要登入的....
若是Win 7,就打開家用網路阿...
4
oowo
iT邦高手 1 級 ‧ 2013-09-26 08:10:20
最佳解答

USER的ID是否就本機登入的那組帳號?是的話可以利用%USERNAME%來帶帳號...

ruey iT邦新手 5 級 ‧ 2013-09-30 11:04:10 檢舉

不是登入的帳號,只是一個共用帳號,所以存取資料時須執行這個批次檔,使用者才能以自己的權限去存取資料。

25
海綿寶寶
iT邦超人 1 級 ‧ 2013-09-25 17:29:15

提供參考

<pre class="c" name="code">
ECHO off
set /p userid=User id : 
set /p password=Password : 

echo userid=[%userid%],password=[%password%]
8
iknowlab
iT邦研究生 4 級 ‧ 2013-09-25 17:46:49

利用WINDOWS的本機帳密即可。
也就是在本機建立一個與SERVER相同的帳號,設定與SERVER相同的密碼。
開機時選該帳號登入,此時連線網路磁碟機都不用輸入密碼了。
若曾經定義好虛擬磁碟機,也不用從新連線,開機正確登入後就都已出現。

ruey iT邦新手 5 級 ‧ 2013-09-30 11:06:07 檢舉

不可能,網域帳號那麼多,怎麼可能這樣玩。

13
ctipde
iT邦高手 1 級 ‧ 2013-09-25 18:06:52

不知道要如何擷取到使用者所輸入的帳號密碼

為何要擷取使用者帳號密碼? 如果沒有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. 
freelab iT邦新手 1 級 ‧ 2013-09-25 18:26:05 檢舉

筆記

8
miels
iT邦新手 5 級 ‧ 2013-09-25 18:30:19
<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

22
小成
iT邦高手 10 級 ‧ 2013-09-25 20:18:14

可能要先釐清一下,這三個網路磁碟機是連線到同一台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%
ruey iT邦新手 5 級 ‧ 2013-09-30 11:16:16 檢舉

是不同台Server,也不能讓密碼顯示出來,所以小弟才來問是否有辦法可擷取使用者所輸入的密碼,再放到變數裡

小成 iT邦高手 10 級 ‧ 2013-09-30 17:02:55 檢舉
小成 iT邦高手 10 級 ‧ 2013-09-30 17:03:27 檢舉
10
sailsolitary
iT邦研究生 2 級 ‧ 2013-09-30 16:18:27

綜合以上大家的回答 ~ 樓主要的應該是不顯示密碼,可以登入不同伺服器的批次檔

不知道用戶端的系統是什麼,如果是 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

這是參考對岸論壇綜合出來的方式^^"

看更多先前的回應...收起先前的回應...
ruey iT邦新手 5 級 ‧ 2013-10-01 15:41:19 檢舉

真糟糕,最佳解答我按錯了,應該是你才對,真抱歉,如果可以改,或是可以補點數給你,煩請告知如何變更或給點,謝謝

sailsolitary iT邦研究生 2 級 ‧ 2013-10-01 18:02:53 檢舉

哈 ~ 不重要啦 ~ 技術交流所獲得的經驗才是最重要的!!!

ruey iT邦新手 5 級 ‧ 2013-10-01 18:20:25 檢舉

感謝你的幫忙,謝謝。

empiresx iT邦新手 5 級 ‧ 2014-06-03 16:32:35 檢舉

太感謝了
讓我學習到這方便的批次檔應用
我讓他搖身一變成我公司中
監控電腦的對時檔案了!!!

我要發表回答

立即登入回答