使用脚本批量重命名多个文件

3

我在这里找到了这个脚本并进行了修改。它只能一次处理一个文件,无法同时处理多个文件。怎样才能让这个脚本在指定目录中重命名多个文件呢?

@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    

1
我不明白你的意思 - 脚本重命名了FOLDER_PATH中的所有文件(但不包括脚本名称的文件 - 奇怪!)。而且,无论文件名是否包含要替换的字母,都会进行重命名。我会从头开始编写一个新的脚本,首先过滤要重命名的文件,然后只重命名那些文件。 - user1016274
你尝试过PowerShell吗?gci "c:\temp\renamefiles\files\" | ren {$_.Name.SubString(64, $_.Name.Length-60)} - TessellatingHeckler
原来脚本运行良好。我没有注意到我放在文件夹中测试的两个文件,它们最终拥有相同的名称。我的错。不过,我真的很喜欢那个PowerShell脚本,棒极了!现在我有两种不同的重命名文件的方法! - Tom Wildt
2个回答

0

我不太明白你的意思,但这对我来说是有效的:

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

如果你执行这个命令,无论是 .txt、.png、.foo、.bar 等类型的文件,所有文件都会被重命名为 "foo"。
在该文件夹中的每个文件都将被重命名为 "foo"。但是,例如有四个.png文件,则只会有一个名为foo.png的.png文件,因为其他文件无法更改名称,因为已经有同名文件存在。

-1

我不是很理解这些,但我认为你正在将每个文件都重命名为相同的名称,这是非法的(例如,在已经有file.txt的目录中不能再有一个file.txt)。 但我不确定是否真的是这种情况,因为我不理解给定的代码。


你的回答只是重申了几年前已经得出的结论。这个答案没有添加任何新信息或解决方案,因此对社区没有任何价值。 - John Glenn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接