精华内容
下载资源
问答
  • 批量重命名

    2017-09-05 11:19:37
    批量重命名文件,很好的用的,文件很小,下载看看吧 批量重命名文件,很好的用的,文件很小,下载看看吧批量重命名文件,很好的用的,文件很小,下载看看吧批量重命名文件,很好的用的,文件很小,下载看看吧
  • 批量 重命名 文件 批量 重命名 文件 批量 重命名 文件 批量 重命名 文件 批量 重命名 文件 批量 重命名 文件 批量 重命名 文件 批量 重命名 文件
  • 深蓝文件批量重命名工具是一款文件批量改名(重命名)软件。深蓝文件批量重命名工具软件特色:1、支持批量插入文字、插入序号、替换字符、文件名转大小写等,插入位置可随意控
  • Windows操作系统可以实现重命名文件操作,却不能实现批量重命名。本实例实现了批量重命名功能,可以将一个文件夹内同一类型的文件按照一定的规则批量重命名。用户可以给出重命名模板,程序可以根据模板对相应的文件...

    Windows操作系统可以实现重命名文件操作,却不能实现批量重命名。本实例实现了批量重命名功能,可以将一个文件夹内同一类型的文件按照一定的规则批量重命名。用户可以给出重命名模板,程序可以根据模板对相应的文件进行重命名。此外,还可以在重命名模板中添加特殊符号,程序会将这些特殊符号替换成重命名后的文件编号。

    思路分析:

    先看视图层,需要一些JLabel控件分别显示指示用户的信息,三个JTextField控件分别显示所选路径、输入文件名模板即输入扩展名,两个JButton控件分别用来浏览文件夹和开始重命名,一个JSeparator控件表示分割线,一个JSpinner控件代表开始编号,一个JScrollPane控件作为容器,在里面放置一个JTable控件列出旧文件名和新文件名。

    再看模型层。首先定义浏览按钮的事件处理方法,在该方法中创建一个JFileChooser文件选择器,使用JFileChooser类的setFileSelectionMode()方法设置只选择文件夹,通过JFileChooser类的showOpenDialog()显示打开对话框,若用户点击确认按钮则使用JFileChooser类的getSelectedFile()方法获取选中的文件夹,最后使用JTextField控件的setText()方法显示文件夹信息。

    定义一个类来实现FileFilter接口,在该类的构造方法中保存文件扩展名,然后定义一个方法,在该方法中使用String类的endsWith()方法来过滤文件扩展名。

    然后定义开始按钮的事件处理方法,首先使用JTextField控件的getText()方法获取模板字符串,若为空则通过JOptionPane类的showMessageDialog()方法提示用户输入模板,然后创建DefaultTableModel对象并使用JTable类的getModel()方法获取表格数据模型,用JTable类的setRowCount(0);方法清除表格数据,使用JSpinner类的getValue()方法获取起始编号,使用String类的indexOf方法获取第一个“#”的索引,使用String类的substring()方法获取模板中数字占位字符串,使用String类的replace()方法把模板中数字占位字符串替换为指定格式,为了规范使用String类的toLowerCase()方法将用户输入的扩展名转换为小写形式,若用户未输入“.”则补上,然后使用File类的listFiles()方法获取文件夹中的文件列表数组,使用foreach()循环遍历每个文件,通过String类的format()方法格式化每个文件名称,使用DefaultTableModel类的addRow()方法把文件的旧名称和新名称添加到表格的数据模型中,使用File类的getParentFile()方法获取目标文件所在的文件夹对象,创建一个File对象并初始化为新的文件名,最后使用File类的renameTo()方法实现文件重命名。

    代码如下:

    import java.awt.EventQueue;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import java.io.File;

    import java.io.FileFilter;

    import javax.swing.JButton;

    import javax.swing.JFileChooser;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import javax.swing.JScrollPane;

    import javax.swing.JSeparator;

    import javax.swing.JSpinner;

    import javax.swing.JTable;

    import javax.swing.JTextField;

    import javax.swing.border.EmptyBorder;

    import javax.swing.table.DefaultTableModel;

    import java.awt.GridBagLayout;

    import java.awt.GridBagConstraints;

    import java.awt.Insets;

    /**

    * 获取文件列表的过滤器

    *

    * @author 李钟尉

    */

    public class RenameFiles extends JFrame {

    /**

    *

    */

    private static final long serialVersionUID = 4534371106024773867L;

    private final class ExtNameFileFilter implements FileFilter {

    private String extName;

    public ExtNameFileFilter(String extName) {

    this.extName = extName;// 保存文件扩展名

    }

    @Override

    public boolean accept(File pathname) {

    // 过滤文件扩展名

    if (pathname.getName().toUpperCase()

    .endsWith(extName.toUpperCase()))

    return true;

    return false;

    }

    }

    private JPanel contentPane;

    private JTextField forderField;

    private JTextField templetField;

    private File dir;

    private JTable table;

    private JTextField extNameField;

    private JSpinner startSpinner;

    /**

    * Launch the application.

    */

    public static void main(String[] args) {

    EventQueue.invokeLater(new Runnable() {

    public void run() {

    try {

    RenameFiles frame = new RenameFiles();

    frame.setVisible(true);

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    });

    }

    /**

    * Create the frame.

    */

    public RenameFiles() {

    setResizable(false);

    setTitle("文件批量重命名");

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    setBounds(100, 100, 383, 409);

    contentPane = new JPanel();

    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

    setContentPane(contentPane);

    GridBagLayout gbl_contentPane = new GridBagLayout();

    gbl_contentPane.columnWidths = new int[] { 72, 54, 60, 87, 91, 0 };

    gbl_contentPane.rowHeights = new int[] { 25, 25, 10, 25, 24, 25, 2,

    216, 0 };

    gbl_contentPane.columnWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0,

    Double.MIN_VALUE };

    gbl_contentPane.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0,

    0.0, 0.0, 0.0, Double.MIN_VALUE };

    contentPane.setLayout(gbl_contentPane);

    JLabel label = new JLabel();

    label.setText("文件批量重命名模块:");

    GridBagConstraints gbc_label = new GridBagConstraints();

    gbc_label.fill = GridBagConstraints.VERTICAL;

    gbc_label.insets = new Insets(0, 0, 5, 5);

    gbc_label.gridwidth = 3;

    gbc_label.gridx = 1;

    gbc_label.gridy = 0;

    contentPane.add(label, gbc_label);

    JLabel label_1 = new JLabel();

    label_1.setText("文件路径:");

    GridBagConstraints gbc_label_1 = new GridBagConstraints();

    gbc_label_1.anchor = GridBagConstraints.EAST;

    gbc_label_1.fill = GridBagConstraints.VERTICAL;

    gbc_label_1.insets = new Insets(0, 0, 5, 5);

    gbc_label_1.gridx = 0;

    gbc_label_1.gridy = 1;

    contentPane.add(label_1, gbc_label_1);

    forderField = new JTextField();

    forderField.setText("");

    GridBagConstraints gbc_forderField = new GridBagConstraints();

    gbc_forderField.fill = GridBagConstraints.HORIZONTAL;

    gbc_forderField.insets = new Insets(0, 0, 5, 5);

    gbc_forderField.gridwidth = 3;

    gbc_forderField.gridx = 1;

    gbc_forderField.gridy = 1;

    contentPane.add(forderField, gbc_forderField);

    JButton button = new JButton();

    button.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {

    do_button_actionPerformed(e);

    }

    });

    button.setText("浏览");

    GridBagConstraints gbc_button = new GridBagConstraints();

    gbc_button.anchor = GridBagConstraints.NORTHWEST;

    gbc_button.insets = new Insets(0, 0, 5, 0);

    gbc_button.gridx = 4;

    gbc_button.gridy = 1;

    contentPane.add(button, gbc_button);

    JSeparator separator_1 = new JSeparator();

    GridBagConstraints gbc_separator_1 = new GridBagConstraints();

    gbc_separator_1.fill = GridBagConstraints.BOTH;

    gbc_separator_1.insets = new Insets(0, 0, 5, 0);

    gbc_separator_1.gridwidth = 5;

    gbc_separator_1.gridx = 0;

    gbc_separator_1.gridy = 2;

    contentPane.add(separator_1, gbc_separator_1);

    JLabel label_5 = new JLabel();

    label_5.setText("使用#可以指定数字计数所占的位置,使用*可以插入原文件名:");

    GridBagConstraints gbc_label_5 = new GridBagConstraints();

    gbc_label_5.fill = GridBagConstraints.VERTICAL;

    gbc_label_5.insets = new Insets(0, 0, 5, 0);

    gbc_label_5.gridwidth = 5;

    gbc_label_5.gridx = 0;

    gbc_label_5.gridy = 3;

    contentPane.add(label_5, gbc_label_5);

    JLabel label_3 = new JLabel();

    label_3.setText(" 模板:");

    GridBagConstraints gbc_label_3 = new GridBagConstraints();

    gbc_label_3.anchor = GridBagConstraints.EAST;

    gbc_label_3.fill = GridBagConstraints.VERTICAL;

    gbc_label_3.insets = new Insets(0, 0, 5, 5);

    gbc_label_3.gridx = 0;

    gbc_label_3.gridy = 4;

    contentPane.add(label_3, gbc_label_3);

    templetField = new JTextField();

    templetField.setText("catrestaurant###");

    GridBagConstraints gbc_templetField = new GridBagConstraints();

    gbc_templetField.anchor = GridBagConstraints.SOUTH;

    gbc_templetField.fill = GridBagConstraints.HORIZONTAL;

    gbc_templetField.insets = new Insets(0, 0, 5, 5);

    gbc_templetField.gridwidth = 3;

    gbc_templetField.gridx = 1;

    gbc_templetField.gridy = 4;

    contentPane.add(templetField, gbc_templetField);

    JLabel label_4 = new JLabel();

    label_4.setText("开始于:");

    GridBagConstraints gbc_label_4 = new GridBagConstraints();

    gbc_label_4.fill = GridBagConstraints.VERTICAL;

    gbc_label_4.insets = new Insets(0, 0, 5, 5);

    gbc_label_4.gridx = 0;

    gbc_label_4.gridy = 5;

    contentPane.add(label_4, gbc_label_4);

    startSpinner = new JSpinner();

    GridBagConstraints gbc_startSpinner = new GridBagConstraints();

    gbc_startSpinner.fill = GridBagConstraints.HORIZONTAL;

    gbc_startSpinner.insets = new Insets(0, 0, 5, 5);

    gbc_startSpinner.gridx = 1;

    gbc_startSpinner.gridy = 5;

    contentPane.add(startSpinner, gbc_startSpinner);

    JLabel label_2 = new JLabel();

    label_2.setText(" 扩展名:");

    GridBagConstraints gbc_label_2 = new GridBagConstraints();

    gbc_label_2.fill = GridBagConstraints.HORIZONTAL;

    gbc_label_2.insets = new Insets(0, 0, 5, 5);

    gbc_label_2.gridx = 2;

    gbc_label_2.gridy = 5;

    contentPane.add(label_2, gbc_label_2);

    JButton startButton = new JButton();

    startButton.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {

    do_startButton_actionPerformed(e);

    }

    });

    extNameField = new JTextField();

    extNameField.setText("jpg");

    GridBagConstraints gbc_extNameField = new GridBagConstraints();

    gbc_extNameField.fill = GridBagConstraints.HORIZONTAL;

    gbc_extNameField.insets = new Insets(0, 0, 5, 5);

    gbc_extNameField.gridx = 3;

    gbc_extNameField.gridy = 5;

    contentPane.add(extNameField, gbc_extNameField);

    startButton.setText("开始");

    GridBagConstraints gbc_startButton = new GridBagConstraints();

    gbc_startButton.anchor = GridBagConstraints.NORTH;

    gbc_startButton.insets = new Insets(0, 0, 5, 0);

    gbc_startButton.gridx = 4;

    gbc_startButton.gridy = 5;

    contentPane.add(startButton, gbc_startButton);

    JSeparator separator_2 = new JSeparator();

    GridBagConstraints gbc_separator_2 = new GridBagConstraints();

    gbc_separator_2.anchor = GridBagConstraints.NORTH;

    gbc_separator_2.fill = GridBagConstraints.HORIZONTAL;

    gbc_separator_2.insets = new Insets(0, 0, 5, 0);

    gbc_separator_2.gridwidth = 5;

    gbc_separator_2.gridx = 0;

    gbc_separator_2.gridy = 6;

    contentPane.add(separator_2, gbc_separator_2);

    JScrollPane scrollPane = new JScrollPane();

    GridBagConstraints gbc_scrollPane = new GridBagConstraints();

    gbc_scrollPane.fill = GridBagConstraints.BOTH;

    gbc_scrollPane.gridwidth = 5;

    gbc_scrollPane.gridx = 0;

    gbc_scrollPane.gridy = 7;

    contentPane.add(scrollPane, gbc_scrollPane);

    table = new JTable();

    table.setModel(new DefaultTableModel(new Object[][] {}, new String[] {

    "旧文件名", "新文件名" }));

    scrollPane.setViewportView(table);

    }

    /**

    * 浏览按钮的事件处理方法

    *

    * @param e

    */

    protected void do_button_actionPerformed(ActionEvent e) {

    JFileChooser chooser = new JFileChooser();// 创建文件选择器

    // 设置只选择文件夹

    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

    int option = chooser.showOpenDialog(this);// 显示打开对话框

    if (option == JFileChooser.APPROVE_OPTION) {

    dir = chooser.getSelectedFile();// 获取选择的文件夹

    } else {

    dir = null;

    }

    forderField.setText(dir + "");// 显示文件夹信息

    }

    /**

    * 开始按钮的事件处理方法

    *

    * @param e

    */

    protected void do_startButton_actionPerformed(ActionEvent e) {

    String templet = templetField.getText();// 获取模板字符串

    if (templet.isEmpty()) {

    JOptionPane.showMessageDialog(this, "请确定重命名模板", "信息对话框",

    JOptionPane.WARNING_MESSAGE);

    return;

    }

    // 获取表格数据模型

    DefaultTableModel model = (DefaultTableModel) table.getModel();

    model.setRowCount(0);// 清除表格数据

    int bi = (Integer) startSpinner.getValue();// 获取起始编号

    int index = templet.indexOf("#");// 获取第一个“#”的索引

    String code = templet.substring(index);// 获取模板中数字占位字符串

    // 把模板中数字占位字符串替换为指定格式

    templet = templet.replace(code, "%0" + code.length() + "d");

    String extName = extNameField.getText().toLowerCase();

    if (extName.indexOf(".") == -1)

    extName = "." + extName;

    // 获取文件中文件列表数组

    File[] files = dir.listFiles(new ExtNameFileFilter(extName));

    for (File file : files) {// 变量文件数组

    // 格式化每个文件名称

    String name = String.format(templet, bi++) + extName;

    // 把文件的旧名称与新名称添加到表格的数据模型

    model.addRow(new String[] { file.getName(), name });

    File parentFile = file.getParentFile();// 获取文件所在文件夹对象

    File newFile = new File(parentFile, name);

    file.renameTo(newFile);// 文件重命名

    }

    }

    }

    效果如图:

    40b883caedf91fa9662b53098fcd0f54.png

    展开全文
  • 如何批量重命名呢?批量重命名有很多方法,可以手动全选,然后修改名字,操作起来很方便,介绍一款好用的小软件。具有以下优点:1、速度快2、自由定义规则3、操作简单。唯一遗憾的是有些系统不太好用,xp系统推荐...
  • 本文实例为大家分享了python实现文件批量重命名的具体代码,供大家参考,具体内容如下代码:# -*- coding:utf-8 -*-import osclass ImageRename():def __init__(self):self.path = 'D:/xpu/paper/plate_data'def ...

    本文实例为大家分享了python实现文件批量重命名的具体代码,供大家参考,具体内容如下

    代码:

    # -*- coding:utf-8 -*-

    import os

    class ImageRename():

    def __init__(self):

    self.path = 'D:/xpu/paper/plate_data'

    def rename(self):

    filelist = os.listdir(self.path)

    total_num = len(filelist)

    i = 0

    for item in filelist:

    if item.endswith('.jpg'):

    src = os.path.join(os.path.abspath(self.path), item)

    dst = os.path.join(os.path.abspath(self.path), '0000' + format(str(i), '0>3s') + '.jpg')

    os.rename(src, dst)

    print 'converting %s to %s ...' % (src, dst)

    i = i + 1

    print 'total %d to rename & converted %d jpgs' % (total_num, i)

    if __name__ == '__main__':

    newname = ImageRename()

    newname.rename()

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持找一找教程网。

    展开全文
  • 批量重命名, 可以自动批量重命名文件, 非常方便。 只要填好要替换的和替换成的扩展名就行了
  • 不知道大家有没有一些情况需要批量重命名呢?当我们拿上大量文件的时候,一个好的批量重命名工具可以帮我们节省很多时间,提高我们学习工作效率,希望能对大家有用吧~功能:批量给文件添加序号,删除指定字符,添加...
    496a1964a1958f63cf6eebca853585b1.png

    不知道大家有没有一些情况需要批量重命名呢?当我们拿上大量文件的时候,一个好的批量重命名工具可以帮我们节省很多时间,提高我们学习工作效率,希望能对大家有用吧~

    功能:批量给文件添加序号,删除指定字符,添加指定字符,修改扩展名,替换字符(可以使用正则表达式)等。。。

    批量修改文件名

    这里给大家介绍的第一个批量修改文件名软件就是它:

    183e562ccc3173e2f731da33343aa2df.png

    现在已经完全免费了,软件作者停更了很长时间,但是现在又开始更新了,因为有了动力~~(几笔打赏~),我们首先选择自己的要修改的文件得文件夹,然后选择我们要修改得模式(宝妈式的教学~):

    2b58572904ce8f1ec5756f2ae91c84ee.png

    点击预览,然后我们就可以看到新文件名,然后执行修改就可以了:

    0e1dfeb4029f579c22d9729364ed95fe.png

    缺点:不能修改文件名~(修改文件名请问下滑~)

    东方云文件(夹)名批量修改程序

    东方云文件(夹)名批量修改的修改内容与上面软件相似,但是他有一个更强大的功能,它可以修改文件夹名字:

    af558a05e16a0ff15b1186d37e1b6dd3.png

    我们直接选择添加文件和文件夹就可以了。

    如果大家不需要修改文件夹名的话,建议大家使用第一个软件~~

    文件名一旦修改就不能恢复了,但是还可以继续改~

    给个赞呗~

    下载地址

    展开全文
  • 原文:千里码 - Python实现批量重命名最近在网络上下载了一部漫画,漫画是图片形式的,下载下来后才发现每一张漫画图片的文件名都是没有规律且又长又复杂的,想要把它们改成按数字递增规律的,一个一个去改文件名...

    e6832bd862ae1a4c5c76a0cbe5e6d248.png

    原文:千里码 - Python实现批量重命名

    最近在网络上下载了一部漫画,漫画是图片形式的,下载下来后才发现每一张漫画图片的文件名都是没有规律且又长又复杂的,想要把它们改成按数字递增规律的,一个一个去改文件名工作量太大,浪费太多时间,于是心想用Python写一个脚本实现批量重命名的操作。

    058f66a8039b5b24bfd17c5651791c63.png
    文件存放在 D:/temp 路径下,文件名类似上图,图片很多,这里仅用少部分做演示

    为了完成脚本,查阅了Python有关文件名的库,发现需要用到Python标准库中的os库。

    一、重命名函数

    Python中有一个给文件重命名的函数:

    os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

    该函数就是将文件名从src改为dst,后两个参数用不到先忽略。

    二、获取文件名函数

    我们还需要获取原文件名,也就是src。

    os库中还有一个函数可以获取文件名:

    os.listdir(path='.')

    该函数可以列出某个目录下的所有文件名。

    所有我们用一个for循环可以获取每一个文件名

    for file in os.listdir(r'D:/temp'):
        print(file)

    输出:

    %80%90%E4%B8%89%E7%A7%8B%E4.jpg
    %AE%E5%8B%92%E6%9E%81%E7%A6.jpg
    %E6%B3%B0%E6%99%AE%E5%8B%92.jpg
    %E8%A3%85%E5%85%E6%B3%B0%E6.jpg

    三、路径合并函数

    由于图片文件和Python脚本并不在同一文件夹下,所以此时的src和dst并不是简单的文件名,而是由路径+文件名组成。例如,文件%80%90%E4%B8%89%E7%A7%8B%E4.jpg其实是

    E:/temp/%80%90%E4%B8%89%E7%A7%8B%E4.jpg,所以我们需要将两部分组合起来。

    Python的os库中有一个函数:

    os.path.join(path, *paths)

    该函数合理地拼接一个或多个路径部分,返回值是 path 和 *paths 所有值的连接。

    上面的例子就可以像下面这样写:

    os.path.join(r'D:/temp','%80%90%E4%B8%89%E7%A7%8B%E4.jpg')

    批量重命名脚本

    于是利用上面这些知识可以写出下面这个完整的脚本(GitHub-Yajanan/FilesPathRename):

    # FilesBatchRename.py
    # 导入os库
    import os
    
    # 图片存放的路径
    path = r"D:/temp"
    
    # 遍历更改文件名
    num = 1
    for file in os.listdir(path):
        os.rename(os.path.join(path,file),os.path.join(path,str(num))+".jpg")
        num = num + 1

    运行一下,可以看到结果如下:

    520465f8ad497e1d04642593f0eb9996.png

    满足了我们的需求。

    (正文完)

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,323
精华内容 2,129
关键字:

批量重命名