zoukankan      html  css  js  c++  java
  • python实例31[自动挂载虚拟盘]

    在windows上使用subst和netuse


    import os
    import subprocess
      
    def RunCommand(cmd):
      
    return subprocess.call(cmd)
      
    def RunCommandWithOutput(cmd):
      p
    =subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
      (stdoutdata, stderrdata) 
    = p.communicate()
      
    return p.returncode, stdoutdata, stderrdata
      
    def SubstDriveToPath(drive, path):
      substcmd 
    = "subst" + " " + drive + " " + path
      
    return RunCommandWithOutput(substcmd)
      
    def UnSubstDriveToPath(drive):
      unsubstcmd 
    = "subst" + " " +drive + " " + "/d"
      RunCommand(unsubstcmd)
      
    def SubstDriveToPathF(drive, path):
      UnSubstDriveToPath(drive)
      UnNetuseDriveToPath(drive)
      
    return SubstDriveToPath(drive, path)

    def NetuseDriveToPath(drive, path):
      netusecmd 
    = "net use" + " " + drive + " " + path
      
    return RunCommandWithOutput(netusecmd)
      
    def UnNetuseDriveToPath(drive):
      unnetusecmd 
    = "net use" + " " + drive + " " + "/del"
      RunCommand(unnetusecmd)
      
    def NetuseDriveToPathF(drive, path):
      UnSubstDriveToPath(drive)
      UnNetuseDriveToPath(drive)
      
    return NetuseDriveToPath(drive, path)
      
    def AutoSubstorNetuse(path):
      successful 
    = False
      
      
    if(not os.path.isdir(path) or not os.path.exists(path)):
        
    print("path is not existed or is not a directory")
        
    return successful
      
      netuse 
    = False
      
    if(path.startswith("\\\\")):
        netuse 
    = True
      
      useddrive 
    = ""
      
    for drive in "ZYXWVUTSRQPONMLKJIHGFEDCBA":
        fulldrive 
    = drive + ":"
        
    if(netuse):
          (returncode, outdata, errdata) 
    = NetuseDriveToPath(fulldrive, path)
          
    if(returncode == 0):
            useddrive 
    = fulldrive
            
    break
        
    else:
          (returncode,outdata,errdata) 
    = SubstDriveToPath(fulldrive,path)
          
    if(returncode == 0):
            useddrive 
    = fulldrive
            
    break
      
    if(not useddrive == ""):
        successful 
    = True
        
      
    return successful, useddrive

    (returncode, outdata, errdata) = SubstDriveToPathF("Y:", "C:\\test")
    (returncode1, outdata1, errdata1) =  NetuseDriveToPathF("X:", "\\\\remotemachinenameorip\\shared")

    (returncode, drive) 
    = AutoSubstorNetuse("C:\\test")
    (returncode, drive) 
    = AutoSubstorNetuse("\\\\remotemachinenameorip\\shared")

    强制挂载到某个虚拟盘:

    SubstDriveToPathF()

    NetuseDriveToPathF()

    自动查找没有使用的盘来挂载:

    AutoSubstorNetuse()

    完!

  • 相关阅读:
    《代码大全2》读书笔记 Week3
    华莱士 勇敢的心 值得一看的电影
    验证sqlserver 不区分大小写
    sql 分割函数
    子报表设置数据源 指定子报表数据 可以预防报表显示错误的问题
    linq 实现 tsql里的 in 和not in的功能
    水晶报表参数构建和数据传入显示函数
    .net 发邮件带附件源码
    将C#的dll文件反编译成il文件工具
    sp_executesql介绍和使用
  • 原文地址:https://www.cnblogs.com/itech/p/1934473.html
Copyright © 2011-2022 走看看