
我的 Windows 電腦上有兩個來自 NAS 的映射網路磁碟機。兩個驅動器都需要相同的用戶名/密碼配置,我選擇不告訴 Windows 記住這一點,因為我希望訪問我的任何文件的最低要求應該至少輸入一個密碼,對嗎?
因此,Windows 在登入時不會連接網路驅動器,並給出常見錯誤:
毫不奇怪,當 Windows 不知道我的網路共享的密碼時,它不知道該怎麼辦。
因此,我想要自動化此過程的方式如下:啟動並登入後,我想要一個網路登入彈出窗口,就像您嘗試訪問窗口時看到的那樣。我想要成功登錄,然後我希望 Windows 嘗試連接網路磁碟機。
我將如何實現這個目標?
(我很清楚,我可以在 Windows 電腦上使用與網路登入相同的使用者名稱和登入名稱來自動執行此操作,但我也不想這樣做,即使這是我通常會推薦給其他人的做法)
答案1
我嘗試用我的基本批次技能來實現這一目標。這就是我的想法。
首先配置視窗以將資料夾視窗作為單獨的進程啟動(而不是將所有資料夾保留在同一個 explorer.exe 下),這允許透過命令提示字元/批次腳本關閉資料夾。
接下來編寫這個批次文件,並將其放置在 **C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup** (為什麼這不是粗體字母?)
@echo off
start explorer "D:\"
:loop
timeout 0
(net use | findstr OK) > nul 2>&1
if errorlevel 1 goto loop
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVELABEL*" /IM explorer.exe
start /wait explorer "G:\"
timeout 0
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVE2LABEL*" /IM explorer.exe
start /wait explorer "F:\"
timeout 0
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVE3LABEL*" /IM explorer.exe
start /wait explorer "H:\"
timeout 0
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVE4LABEL*" /IM explorer.exe
stop
只需將磁碟機號碼替換為適用於您的系統的磁碟機號,並將 NETWORKDRIVELABEL 替換為對應網路磁碟機的名稱即可。這是必要的,因為視窗標題的全名是“NETWORKDRIVELABEL (\SHARENAME) (DRIVELETTER)”,但我沒有編寫完整的視窗標題,而是簡單地使用星號(*) 來定義它旨在關閉任何資源管理器進程以 NETWORKDRIVELABEL 開頭的視窗標題。
它的作用是嘗試使用 Windows 的檔案總管開啟網路共用「D:\」。因為它是網路共享,所以您會收到登入提示。淨使用|尋找str 確定(在“net use”的輸出中尋找“OK”)並且在找到 OK 之前不會繼續前進(這部分假設您沒有初始化網絡驅動器。我不知道如何更詳細地使用 findstr;它不像bash 的grep 那樣好)。
然後,一旦偵測到網路磁碟機已正確連接,它將繼續嘗試透過使用資源管理器開啟它們然後關閉它們來對應其他網路磁碟機。
我必須在批次檔末尾使用停止命令,否則它不會正常結束(等待用戶輸入)。
如果您想執行此操作但隱藏命令窗口,請參閱此處:如何在不啟動“命令視窗”的情況下運行批次檔?