iT邦幫忙

0

python生成bat檔 測試連線網路磁碟機

  • 分享至 

  • xImage

各位大大
小弟想測試生成bat檔連線網路磁碟機
網與磁碟機需用網域帳號驗證
net use I: /delete
net use I: \192.1.1.95\AccessDB /user:bus\ABC "QQ@123"
txt_01磁碟機I
txt_02是磁碟機路徑
txt_03是帳號
txt_04是密碼
只是當我要指定txt_05 = "/user:bus\ " 就有問題
\後面一定要有空格 否則資料型態就會有問題
只是這樣BAT語法就會出錯
請教各位大大 有什麼方法可以解決
感激不盡

以下是部分程式碼

    txt_05 = "/user:bus\ "
    txt_05 = txt_05.rsplit()
    print(txt_05)
# 创建 BAT 文件
    with open("run"+txt_01+".bat", "w") as d:
        d.write("net use "+txt_01+": /delete")
        d.write('\r\n')
        d.write("net use "+txt_01+": "+txt_02+" "+txt_05+""+txt_03+" "+txt_04+"")
# 执行 BAT 文件
    subprocess.call("run"+txt_01+".bat", shell=True)

錯誤訊息

d.write("net use "+txt_01+": "+txt_02+" "+txt_05+""+txt_03+" "+txt_04+"")
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
TypeError: can only concatenate str (not "list") to str
看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2023-05-31 15:53:57 檢舉
...
你都用python了,直接連SMABA就好,生個bat然後用subprocess調用是不是有點繞?

https://pysmb.readthedocs.io/en/latest/api/smb_SMBConnection.html
ITT_T iT邦新手 4 級 ‧ 2023-05-31 16:41:31 檢舉
感謝您提供想法 這部分我沒涉略我研究一下
不過我找到取代的AD驗證語法了
d.write("net use "+txt_01+": "+txt_02+" /USER:"+txt_03+"@wus.com.tw "+txt_04+"" )
還是很感謝您
比起python去測試Windows的共享,我還比較喜歡powershell的方法,直接,不繞
ccutmis iT邦高手 2 級 ‧ 2023-06-01 08:36:56 檢舉
提供一些個人心得給樓主參考(不一定正確):
在 python 裡面字串裡的倒斜線( '\' ) 它有本身預設的作用,通常是用來處理特殊字元例如 '\r\n' (樓主應該知道這是什麼),因此如果字串裡面你需要它就是一個倒斜線時,要寫成 '\\' 這個在 windows base的系統比較常見,因為在 linux裡面路徑是用 '/' 作分隔就不會遇到這種問題。

如果用的是比較新的 python 版本可以利用 f"字串{變數}" 這個好用的功能取代麻煩的 "字串"+變數
例如 原本的 :
d.write("net use "+txt_01+": "+txt_02+" /USER:"+txt_03+"@wus.com.tw "+txt_04+"" )
可改成
d.write(f"net use {txt_01}: {txt_02} /USER:{txt_03}@wus.com.tw {txt_04}")

確實如樓上大大們說的,你這個需求可能有更優解,不過能抓到老鼠的就是好貓,以上若有說錯請見諒哈^^"。
ITT_T iT邦新手 4 級 ‧ 2023-06-01 08:54:13 檢舉
謝謝大家提供寶貴經驗 感激不盡
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答