• slider image 221
:::

2-4 掛載 nas 個人目錄到桌面

使用了 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

 


Google網站翻譯工具列

站內搜尋