#Filename:brn.py #Description: batch replace certain words in file names #Use to bat rename the file in a dir(modify the suffix from a to b) for Windows Vista OS import sys import os import fnmatch import re #parse params p=input("Please input work directory(current path for enter):") if p=='/r': p='.' p=p.rstrip('/r') print (p) while not os.path.exists(p): print (p+' is not existed.Please input the work directory:') p=input("Please input work directory(current path for enter):") s=input("Please enter the words which need be modified(must):") while s=='/r': s=input("Please enter the words which need be replaced(must):") s=s.rstrip('/r') d=input("Please enter the words which want to change to(must):") while d=='/r': d=input("Please enter the words which want to change to(must):") d=d.rstrip('/r') try: sure=input("Are you sure to rename the file named *"+s+"*"+" to *"+d+"*"+" in directory "+p+"? y/n:") sure=sure.rstrip('/r') if sure!='y': print ("Cancel") else: for root, dirs, files in os.walk(p, True): for file in files: print (os.path.join(root,file)) if os.path.isfile(os.path.join(root,file)):#Only file is file,not a dir ,do this if fnmatch.fnmatch(file, '*'+s+'*'): f=str(file).replace(s,d) if p=='.': command='move '+str(file)+" "+f else: command="move "+os.path.join(root,file)+" "+os.path.join(root,f) print (command) if os.system(command)==0:#do actual rename print ("Rename "+str(file)+" to "+f+" success") else: print ("Rename "+str(file)+" to "+f+" failed") #else: #print str(file)+" is a directory.omit" except IndexError: print (IndexError.message)