c# - 一次又一次地以相同的方式重命名文件

标签 c# java batch-file file-rename

我有一个程序处理我的一些图像并将它们返回到我的目录。有趣的是,它们现在都是 png 图像而不是 gif。

起初我认为这是简单的重命名,但我使用 createimagefrompng() 对 php 进行了测试,如果图像不是有效的 png 文件,它将抛出错误。没有返回错误。

这是否给我 100% 准确的结果不是这里的问题,问题是我想以类似的方式重命名所有这些文件。

现在虽然我可以编写一个 php 文件来为我执行此操作,但我想知道如何以批处理或 c# 或 java 的方式执行以下操作。

所有这些文件仍然包含字符串“.gif”,我想删除它。 在 php 中,它就像使用 foreach 循环一样简单,读取文件,使用 str_replace,然后销毁旧文件并写入新文件。

我有点不知道如何批量执行此操作,C# 或 Java,有人可以帮我吗?

此外,我运行的是 Windows Vista,并且安装了 Powershell 1.0。

解决方案 1 - C#:

var files = Directory.GetFiles(@"C:\Downloads\Temp\test\");
foreach (var file in files)
{
  if(file.Contains(".gif"))
  {
    string testing = string.Format("{0}.png", Path.GetFileNameWithoutExtension(file.Replace(".gif", "")));
    File.Move(file, @"C:\Downloads\Temp\test\"+testing);
  }
}

最佳答案

在命令行上:

(假设没有 .gif 文件)

REM first rename all .gif.png to .gif
for %i in (*.gif.png) do ren %i %~ni

REN then rename all .gif to .png
for %i in (*.gif) do ren %~ni.gif %~ni.png

使用 for/help 找出您的 Windows 版本支持的 % 选项。

以下不适用于 .gif.png,抱歉我看错了那部分。

在命令行上(更简单!):

ren *.gif *.png

Java 版本(固定为 .gif.png):

import java.io.File;
import java.io.FilenameFilter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main
{
    public static void main(final String[] argv)
    {
        final File   dir;
        final File[] entries;

        dir     = new File(argv[0]);
        entries = dir.listFiles(new FilePatternFilter(".*\\.gif\\.png"));

        for(final File entry : entries)
        {
            if(entry.isFile())
            {
                final String path;
                final String newPath;
                final File   newEntry;

                path     = entry.getPath();
                newPath  = path.substring(0, path.length() - "gif.png".length()) + "png";
                newEntry = new File(newPath);

                if(!(entry.renameTo(newEntry)))
                {
                    System.err.println("could not rename " + entry.getPath() + 
                                       " to " + newEntry.getPath());
                }
            }
        }
    }
}

关于c# - 一次又一次地以相同的方式重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/679485/

相关文章:

java - java 线程如何使 UI 响应更快?

batch-file - 批处理文件 - 验证参数

windows-7 - Bat 文件在我的桌面上创建 Windows 7 快捷方式.lnk

c# - 在 json 和 Web api 之间保持 C# datetime 本地时间?

c# - Windows 运行时方法不能通用 - 原因、解决方法、替代方案?

c# - 是否可以创建具有通用事件的类?

c# - 如何在 Cosmos DB 中将 "Not in"与 ARRAY_CONTAINS 一起使用?

java - 如何使用第三方字体从 Unicode 字符集语言创建 PDF 文档

java - 使用反射访问成员变量

windows - 使用 "cmd"和 "start"命令获取应用程序的退出代码