0

如果我有一些名为 pippo_yyyymmdd.txt、pluto_yyyymmdd.txt 等的文件,如何删除时间戳并将文件重命名为 pippo.txt、pluto.txt?

4

2 回答 2

3

试一试,它将删除任何下划线后跟 8 位数字。这是 tha basicmidea,它不会处理最终具有相同名称的文件:

Get-ChildItem *.txt | 
Where {$_.Name -match '_\d{8}\.txt' } | 
Rename-Item -NewName {$_.Name -replace '_\d{8}'}
于 2013-04-17T15:41:29.327 回答
1

我遇到了同样的问题,但不幸的是,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)

这是我第一次在网上发布代码。我希望它对你有用,就像对我一样。:)

于 2017-09-04T16:34:31.477 回答