2010-01-21 178 views
2

我需要重命名Windows文件服務器上的整個文件堆 - 我不介意使用哪種語言,只要它很快捷便捷!用C#/ Python重命名遠程文件服務器上的文件

我知道這是基本的,但我只想澄清 - 僞代碼...

server = login (fileserver, creds) 

foreach (file in server.navigateToDir(dir)) 
    rename(file) 

我知道如何做到這一點在Python/C#如果我是一個本地用戶,但不知道如果它甚至可以使用Python遠程執行此操作。我搜索了代碼片段/幫助,但還沒有找到。

謝謝。

+0

在代碼中進行服務器登錄相當危險,簡單的方法是將驅動器映射到共享文件夾,並以與本地文件相同的方式訪問它。您是否正在尋找一種方法讓服務器遠程重命名文件,而無需從客戶端獲取任何文件訪問權限? – Lazarus 2010-01-21 14:44:58

+0

我很高興,如果它是hacky /有風險的代碼 - 這只是對我的用戶目錄中的許多文件執行一次性批處理。這將從客戶端運行。 將驅動器映射到文件夾是一個好主意,我會給它一個提示。 – 2010-01-21 14:49:14

+0

Lazarus - 將驅動器映射到工作的文件夾。如果你想把它作爲我的問題的答案,我會給你信用。謝謝。 – 2010-01-21 14:55:50

回答

0

下重命名文件中的每個文件夾路徑的子目錄給出。它將文件從給定的文件名(例如「blah.txt」)重命名爲文件夾名稱+擴展名。

注意: Z可以是本地驅動器或網絡驅動器(即文件夾位於文件服務器映射網絡驅動器上)。

例如從殼...

python renamer.py "Z:\\FolderCollectionInHere" blah.txt csv 

...將重命名 「Z:\ FolderCollectionHere」 的每一個直接子目錄中的文件 'blah.txt' 爲.csv。

import os 
import sys 

class Renamer: 
    def start(self, args): 
     os.chdir(args[1]) 
     dirs = os.listdir(".") 

     for dir in dirs: 
      try: 
       os.rename(dir + "\\" + args[2], dir + "\\" + dir + "." + args[3]) 
       print "Renamed file in directory: " + dir 
      except Exception: 
       print "Couldn't find file to rename in directory: " + dir 

Renamer().start(sys.argv) 
1

對文件名使用\\ servername \ sharename \ somefile.foo - 前提是您有權訪問它並在Windows上運行。

您也可以映射了網絡驅動器,並把它作爲任何其他本地驅動器(Y:\共享名\ somefile.foo)

+1

使用像\\ servername \ sharename \ somefile.foo這樣的直接路徑不起作用。 – 2010-01-21 15:15:49

1

看看pyfilesytem,它爲本地和遠程文件系統提供了一致的接口。