我想提到的是,几乎所有这些答案都很好地控制了它的重命名,我想对所有工作进行检查,只有一个答案不起作用,但如果这有助于任何人,他们将有3个4个答案是有效的
我的共享脚本工作得很好,但它重命名了它在目录中找到的所有内容,所以在使用我的共享脚本
时请小心,对于超大文件,我使用python
import os
# Function to rename multiple files
def main():
i = 1000
path="C:/Users/user/Desktop/My Folder/New folder/New folder/"
for filename in os.listdir(path):
my_dest ="(" + str(i) + ")" + ".txt"
my_source =path + filename
my_dest =path + my_dest
# rename() function will
# rename all the files
os.rename(my_source, my_dest)
i += 1
# Driver Code
if __name__ == '__main__':
# Calling main() function
main()
我想控制计数器,让它只显示txt文件,如果我有。txt。jpeg。mpeg,
所有文件都要重命名,如何控制它只显示。txt文件
示例
File_2019.txt - this should be renamed to (1000).txt
FileRecycled_2019.txt - this should be renamed to (1001).txt
结果
FileRecycled_2019.txt - this should be renamed to (1000).txt
File_2019.txt - this should be renamed to (1001).txt
当使用这个基于文件名的方法时,它翻转了我的文件的顺序
它从字母顺序中取出
我正在研究一个名字被翻转的解决方案,一旦我找到它,我会分享它,所以如果它帮助别人
好了,我有了一个下划线删除批处理文件,它修复了翻转
并正确地重命名了
对于较小的文件我将使用这个
@echo off
Setlocal enabledelayedexpansion
Set "Pattern=_"
Set "Replace= "
For %%a in (*.txt) Do (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)
set count=1000
for %%f in (*.txt) do (
set /a count+=1
ren "%%f" "(!count!).txt"
)
您可以使用pathlib
模块
from pathlib import Path
from os import chdir
path = Path.home() / 'desktop' / 'My Folder' / 'New folder' / 'New folder' # The path to use
to_usenum = 1000 # Start num
alltxt = list(path.glob('*.txt')) # Getting all the txt files
chdir(path) # Changing the cwd to the path
for i, txtfile in enumerate(alltxt):
to_usename = f"({to_usenum+i}).txt" # The name to use
txtfile.rename(to_usename)
当涉及到文件处理时,pathlib
模块会派上用场。代码中使用os
模块将当前工作目录更改为path
的位置,因为重命名的文件将放在当前工作目录中。
您可以在重命名前检查文件名是否为。txt。
if filename.endswith(".txt"):
os.rename(my_source, my_dest)
i += 1
在文件名上,您没有指定名称的顺序。您可以使用for filename in sorted(os.listdir(path)):
按字母顺序移动。
我的解决方案是:
import os
import glob
def main():
path = "C:/Users/user/Desktop/My Folder/New folder/New folder/"
suffix = '.txt'
files = glob.glob(path + '*' + suffix)
for idx, filename in enumerate(sorted(files)):
os.rename(
filename,
os.path.join(path, f"({1000 + idx})" + suffix)
)
if __name__=="__main__":
main()
使用glob
获取.txt
后缀文件夹中的所有文件路径。它还使用enumerate
对每个文件进行计数,而不必自己计算i
的值。文件名使用f字符串生成。
我用一个简单的方法解决了这个问题:
import os
# Function to rename multiple files
def main():
i = 1000
path = 'C:/Users/user/Desktop/My Folder/New folder/New folder/'
for filename in os.listdir(path):
my_dest = f'({str(i)}).txt'
my_dest = path + my_dest
my_source = path + filename
ext = my_source.split('.')[-1]
if ext == 'txt':
os.rename(my_source, my_dest)
i += 1
# Driver Code
if __name__ == '__main__':
# Calling main() function
main()
我的建议是使用glob,试试
import os
import glob
# Function to rename multiple files
def main():
i = 1000
path="C:/Users/user/Desktop/My Folder/New folder/New folder/"
files = glob.glob(path + '*.txt')
for filename in files:
my_dest ="(" + str(i) + ")" + ".txt"
my_source =path + filename
my_dest =path + my_dest
# rename() function will
# rename all the files
os.rename(my_source, my_dest)
i += 1
# Driver Code
if __name__ == '__main__':
# Calling main() function
main()
这将搜索任何以TXT扩展名
结尾的文件名