iT邦幫忙

3

可隱藏多個磁碟分區的 BAT

因為使用者未養成在 NAS 上進行存取,上週開始要求將C槽以外的資料移到 NAS ,今日進行關閉C槽以外的磁碟,考慮使用者的習慣,擔心關閉後又要求開啟,所以選擇採用修改登錄檔的方式進行隱藏,未來如果臨時需要讀取未轉移的資料時,可以請使用者在位置列輸入原來的磁碟代號即可讀取原資料,免得後續還得要跑一趙.

因為有多台電腦需要修改,所以做了個批次檔來加快工作,有需要的邦友請取用。
*系統碟的分區代號會自動隱藏無法選擇,一舨大多會是C,系統碟不在C也會自動辨視。

@Echo off
fsutil dirty query %SystemDrive%>Nul 2>Nul||(Echo.&Echo.&Echo 注意!動作未完成,請用右鍵以系統管理員身分執行&Echo.&Echo.&Echo.&Echo.&Pause&Exit)
Setlocal ENABLEDELAYEDEXPANSION
Set /a DiskNum=5
Set FullDsik=ABCDEFGHIJKLMNOPQRSTUVWXYZ01
Set FullDsik=!FullDsik:%SystemDrive::=%=!
For %%i In (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do (
	Set /a DiskNum *=2
	Set /a "DiskNum1 = !DiskNum! / 10"
	Set %%i=!DiskNum1!
)
:Choice
Cls
Echo.&Echo.&Echo.&Echo.&Echo.&Echo.&Echo.
Echo.			---操作說明---
Echo.	1.選擇要隱藏的磁碟機,選擇後立即修改
Echo.	2.重複選取多個磁碟區代號可以隱藏多個磁碟代號
Echo.	3.若要關閉隱藏選擇代號:「1」
Echo.	4.如要關閉程式可按右上角「X」或選擇「0」離開
Echo.	注意:修改完需要重開機才會生效。
Echo.	-------------------------------------------------
Echo 請選擇要隱藏的磁碟機代號:
Echo 要離開程式請選擇「0」
Choice /C %FullDsik%
Set CheckFind=%ErrorLevel%
If %CheckFind% EQU 27 Set DataValue=0&Goto :write
If %CheckFind% EQU 26 Exit /b
Echo.
Set /a "Choice =%CheckFind% - 1"
(ECHO %Check%)|(Findstr \^^^<"%CheckFind%"\^^^>)>Nul&&(
    Echo 操作錯誤[重複的磁碟機代號]請重新輸入。
)||(
    Set Check=%CheckFind% %Check%
    Set /a "DataValue = !DataValue! + !FullDsik:~%Choice%,1!"
    Goto :Write
)
Echo 選擇的磁碟機:!FullDsik:~%Choice%,1!
Echo DataValue值: %DataValue%
Pause
Goto :Choice
:write
Reg Add "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /f /v "NoDrives" /d !DataValue! /t REG_DWORD
Pause
Goto :Choice

2 則留言

0
marlin12
iT邦新手 3 級 ‧ 2018-09-23 16:01:29

不知這樣隱藏磁碟有甚麽副作用,建議先把磁碟備份。

如果要恢復被隱藏的磁碟,有以下2個方法:
[方法1]用NoDrives Manager

[方法2]在[命令提示字元]裏運行以下的指令,會恢復全部被隱藏的磁碟:

reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v "NoDrives"

[備註]被隱藏的磁碟要在重新登入後才會被恢復。

[參考]
隱藏 [Windows 檔案總管] 中的實體磁碟機
reg delete

感謝補充

不用客氣,大家一起學習

0
utopia
iT邦新手 3 級 ‧ 2018-09-25 12:42:20

很實用的分享和補充!/images/emoticon/emoticon12.gif
感謝!

我要留言

立即登入留言