如果我有一些名为pippo_yyyymmdd.txt,pluto_yyyymmdd.txt等的文件,我如何删除时间戳并将文件重命名为pippo.txt,pluto.txt?
答案 0 :(得分:2)
尝试一下,它将删除任何下划线后跟8位数字。这是基本的,它不会处理最终具有相同名称的文件:
Get-ChildItem *.txt |
Where {$_.Name -match '_\d{8}\.txt' } |
Rename-Item -NewName {$_.Name -replace '_\d{8}'}
答案 1 :(得分:0)
我遇到了同样的问题但不幸的是,PowerShell并没有帮助我解决它。所以我然后使用Python来解决这个问题,它像炸弹一样工作。您只需将python脚本复制到受影响的文件夹中,然后运行该脚本以从文件夹和子文件夹中的所有文件中删除时间戳。
import os, sys, re
fileNameList =[]
patho = os.path.dirname(os.path.realpath(sys.argv[0]))
def renamer(fpath):
for path, subdirs, files in os.walk(fpath):
for name in files:
if re.findall(r"(?ix)(\.ini)", name, re.I) == None:
if re.search(r"(?ix)(\(\d{4}\_\d{2}_\d{2}\s\d{2}\_\d{2}\_\d{2}\sutc\))", name, re.I) != None:
old_name = os.path.join(path,name)
print(old_name)
new_name = re.sub(r"(?ix)(\s\(\d{4}\_\d{2}_\d{2}\s\d{2}\_\d{2}\_\d{2}\sutc\))", "", old_name, re.I)
print(new_name)
try:
os.replace(old_name,new_name)
except:
print(old_name)
fileNameList.append(old_name)
def log_errors_directories(fileNameList):
filename = "Log of error filenames.txt"
if len(fileNameList) != 0:
log = open(filename, "a")
log.write("###########################################################\n")
i = 1
for line in fileNameList:
nr_line = str(i) + " " + str(line)
log.write(str(nr_line))
log.write("\n")
i += 1
log.write("###########################################################\n\n")
log.close()
renamer(patho)
log_errors_directories(fileNameList)
这是我第一次在网上发布代码。我希望它对你有用,就像它对我一样。 :)