【问题标题】:rename multiple files with script用脚本重命名多个文件
【发布时间】:2015-06-11 20:11:29
【问题描述】:

我在这里找到了这个脚本并对其进行了修改。它一次仅适用于 1 个文件,而不适用于多个文件。如何让这个脚本重命名指定目录中的多个文件?

@echo off
setlocal enabledelayedexpansion
set X=64
set Y=4
set FOLDER_PATH=c:\temp\renamefiles\files
pushd %FOLDER_PATH%
for %%f in (*) do if %%f neq %~nx0 (
  set "filename=%%~nf"
  set "filename=!filename:~%X%,-%Y%!"
  ren "%%f" "!filename!%%~xf"
)
popd    

【问题讨论】:

  • 我不明白你的意思 - 脚本重命名 FOLDER_PATH 中的所有文件(但不是具有脚本名称的文件 - 奇怪!)。并且不考虑文件名是否包含要替换的字母。我会从头开始编写一个新脚本,它首先过滤要重命名的文件,然后只重命名那些。
  • 你试过 PowerShell 吗? gci "c:\temp\renamefiles\files\" | ren {$_.Name.SubString(64, $_.Name.Length-60)}
  • 原来脚本工作正常。我没有注意我放在文件夹中进行测试的 2 个文件,它们最终具有相同的名称。我的错。但是,我真的很喜欢那个 powershell 脚本,嘭!现在我有 2 种不同的方式来重命名文件!

标签: batch-file windows-console


【解决方案1】:

我真的不明白你的意思,但这对我有用:

ren "path\to\your\folder\*.*" "foo.*"

如果你执行这个命令,每一个文件,不管有没有.txt、.png、.foo、.bar、..文件。

该文件夹中的每个文件都将重命名为“foo”。 但是如果例如有四个.png文件,那么只有一个.png文件落入foo.png,因为当已经存在其他同名的文件时,其他文件无法重命名。

【讨论】:

    【解决方案2】:

    我不太了解这些,但我认为您正在重命名每个具有相同名称的文件,这是非法的(例如,您不能在已经有 file.txt 的目录上拥有 file.txt) 但我不确定是否真的如此,因为我不理解给定的代码。

    【讨论】:

    • 您的回答只是重申了多年前已经得出的结论。这个答案没有添加任何新的信息或解决方案,因此它对社区没有任何价值。
    猜你喜欢
    • 2016-03-14
    • 2021-11-30
    • 1970-01-01
    • 2018-06-09
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 2011-06-19
    相关资源
    最近更新 更多