首页 > 解决方案 > 根据列表重命名文件

问题描述

可用的方法,AFAIK:在 Windows 7 上创建一个 *.bat 文件来完成这项工作。无法安装任何其他程序。

假设我们有一个包含一些文件的文件夹。我有一个列表,其中每个文件,取决于它们的文件名,都与一个 ID 相关联。

现在我需要根据该列表将这些文件复制到以关联 ID 作为文件名的地方。

例子:

文件夹中的文件:

10.txt
11.txt
12.txt

名单:

10 83
11 49
12 94

结果应该是:

10.txt → 83.txt
11.txt → 49.txt
12.txt → 94.txt

标签: windowspowershellfilebatch-filefile-rename

解决方案


您的问题没有指定是否要对所有文件、特定文件或者您的列表文件是否也包含文件的扩展名,因此我将仅使用您的示例:

@echo off
for /f "tokens=1,*" %%i in (list.txt) do (
   if exist "%%i.txt" %%j copy /Y "%%i.txt" "%%j.txt"

)

您可能想要添加/Y以禁止提示覆盖文件。但是,如果您不想覆盖并且可能在稍后阶段源文件的内容可能需要附加到现有的新文件,那么您可以检查目标文件的存在然后附加:

@echo off
for /f "tokens=1,*" %%i in (list.txt) do (
   if exist "%%i.txt" if not exist "%%j.txt copy "%%i.txt" "%%j.txt"
   if exist "%%j.txt" type "%%i.txt">>"%%j.txt"
)

推荐阅读