2010-01-21 175 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,它为本地和远程文件系统提供了一致的接口。