使用了 OAT 在電腦教室中開機自動還原,也隱藏了 D 磁碟方便教室的管理。
使用 nas 分享學生可以存放作品檔案,但有時會有誤存或拖拉到不同目錄的問題。所以寫了個小程式來掛載目錄到桌面上。
*需安裝 python 3 及 easygui 模組套件
* pip install easygui
* 在程式修改 機器名稱(例 F401)對映的網路磁碟位置:
例 F4 對映到 \\nas2\F4class\
* 由於掛載指令需要系統管理員身份,所以再在桌面上做個批次檔,進階處給系統管理權限執行。
python c:\tools\mount-home.py
學生輸入班級代號,會在對映的網路磁碟目錄(nas上先建班級目錄601)會自動建機號如: 601\01 目錄,並在桌面上出現 MyHome_601_01 目錄。
增加剪映的目錄到 MyHome 中,但要注意先掛載目錄後,再開剪映才能正確。如果已先開剪映,需要完全結束剪映,重新載掛目錄。
'''
在 5a88 電腦教室預設為自動還原,學生工作區使用 nas 分享,但同時共用,會造成誤存或拉動的問題。
寫了這個簡單程式掛載個人目錄到桌面上,簡化以上的問題。
2023/4/24 增加剪映的工作目錄連到個人目錄下。
設定部份:
會取得機器名稱做判斷,例如: F401 這樣的學生機器名稱。
再取 F4 的 nas 目錄是指向 \\nas2\F4Class 目錄中
執行:
建一個批次檔 bat,如下(都放在 c:\tools\ 目錄中)
python c:\tools\mount-home.py
把批次檔 bat 做捷徑,註明要以系統管理員身份執行。
學生執行後會詢問班級代號,如:601 ,會檢查 \\nas2\F4Class 中有無 601 這個班級目錄(有再檢查學生機號的目錄,無則自動建立),就會連結為 MyHome_601_01 。
如果選擇取消,連結目錄會清除。重輸代號,會先自動刪除舊連結
'''
import socket ,os
import easygui
import shutil
#取得 ip 等
hostname = socket.gethostname()
local_ip = socket.gethostbyname(hostname)
#id = local_ip.split('.')
sit_id = hostname[2:]
# nas 對映目錄
class_path= {"F4":"\\\\nas2\\F4Class\\", "F3":"\\\\nas2\\F3Class\\"}
#連結目錄放在桌面上
MyHomeRoot= "C:\\Users\\user\\Desktop\\"
#剪映
JianyingRoot= "C:/Users/USER/AppData/Local/JianyingPro/User Data/Projects"
class_computer= hostname[0:2]
path_first = class_path.get(class_computer.upper())
#清除之前的連結目錄
if os.path.exists("C:/Users/USER/AppData/Local/JianyingPro" ) :
#刪正常檔(全部)
shutil.rmtree(JianyingRoot, ignore_errors=True)
try:
#只刪連結檔,不刪內容
os.rmdir(JianyingRoot)
except:
pass
for root, dirs, files in os.walk(MyHomeRoot):
for dd in dirs:
# print(dd)
if 'MyHome_' in dd :
fullpath = os.path.join(root, dd)
#print(fullpath)
os.rmdir(fullpath)
if '共享_C' in dd :
fullpath = os.path.join(root, dd)
#print(fullpath)
os.rmdir(fullpath)
#選擇
#class_id = input('請輸入班級代號:(例六甲:601)')
done = False
while not done :
cid = easygui.enterbox('請輸入 5 碼班級代號及座號:\n(例:50101 五甲一號)')
if cid == None :
done = True
continue
if cid == '':
continue
try:
#需全為數字
tonum = int(cid)
#字串 5 碼
if len(cid) != 5:
raise 'not ok'
sit_id = ''
class_id = cid[0:3]
g_sit_id = cid[3:]
#座號限制
if int(g_sit_id)>0 and int(g_sit_id)<=31 :
sit_id = '{:02}'.format(int(g_sit_id))
else:
raise 'not'
chk_dir = "{}\\{}".format(path_first,class_id)
#需有班級的目錄
if os.path.exists(chk_dir):
#全班共用 00 目錄
if not os.path.exists(chk_dir + "\\share" ) :
os.makedirs( chk_dir+"\\share" )
#要掛載的命令 全班
cmd = "cmd /c mklink /D {3}共享_C{0} {2}{0}\\{1}".format(class_id,'share' ,path_first ,MyHomeRoot)
#print(cmd)
os.system(cmd)
#座號目錄可自生成
if not os.path.exists(chk_dir + "\\{}".format(sit_id) ) :
os.makedirs( chk_dir+"\\{}".format(sit_id) )
if not os.path.exists(chk_dir + "\\{}\\Jianying".format(sit_id) ) :
os.makedirs( chk_dir+"\\{}\\Jianying".format(sit_id) )
#要掛載的命令
cmd = "cmd /c mklink /D {3}MyHome_{0}_{1} {2}{0}\\{1}".format(class_id,sit_id ,path_first ,MyHomeRoot)
print(cmd)
os.system(cmd)
#mount JianyingRoot
if os.path.exists("C:/Users/USER/AppData/Local/JianyingPro" ) :
cmd = "cmd /c mklink /D \"{3}\" {2}{0}\\{1}\\Jianying".format(class_id,sit_id ,path_first ,JianyingRoot)
print(cmd)
os.system(cmd)
done = True
except:
continue