批量:根据 dir 命令重命名文件

Batch : Rename a file according to the dir command

我无法将文件重命名为目录的结果。 示例:

我在 C 盘中有一个名为 candidate 的文件夹,在 candidate 文件夹中有以下文件:

  1. something.txt
  2. everything.doc
  3. onething.bmp

当我 dir 时,我将获得文件列表。

文件夹中将始终有 1 个 txt 文件和 1 个 bmp 文件

如果我使用 dir *.txt

,我该如何重命名 BMP 文件,使其与 TXT 文件同名

在上面的示例中,如何将 onething.bmp 更改为 something.bmp

提前感谢您的任何回答

这应该有效:

@ECHO OFF
FOR %%X in ("*.txt") DO (SET txtName=%%X)
FOR %%X in ("*.bmp") DO (SET bmpName=%%X)
FOR /F "tokens=1 delims=." %%X IN ("%txtName%") DO (
    REN %bmpName% %%X.bmp
)

这仅在 bat 文件与 txt 和 bmp 文件位于同一文件夹中时才有效。如果它位于其他地方,您将不得不调整路径。 如果文件夹中有多个 bmp/txt 个文件,则只会处理 "last" 个文件。

for %%X in ("*.txt") do (
 for %%Y in ("*.bmp") do (
  echo ren %%Y %%~nX%%~xY
 )
)

如果输出是您需要的,请删除 echo

有关 %%~nX 等的解释,请参阅 for /?