批处理文件:当另一个.xlsx文件存在于同一文件夹中时,如何重命名.xls文件?

时间:2017-11-12 16:38:59

标签: excel windows batch-file batch-rename

我有一个包含1个批处理文件和2个Excel文件的文件夹 - old.xls new.xlsx

我需要使用同一文件夹中的批处理文件将这两个文件重命名为test.xls和test.xlsx。

当我尝试重命名.xlsx文件时,我可以使用以下命令成功完成:

ren *.xlsx test.xlsx

但是当我尝试对.xls文件执行相同操作时,我收到以下错误:

ren *.xls test.xls

A duplicate file name exists, or the file
cannot be found.

有人能告诉我怎么做吗?我是批处理文件的新手。

1 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
PUSHD "%sourcedir%"


ECHO directory before xlsx rename
DIR /x /a-d
REN *.xlsx test.xlsx
ECHO ============================
ECHO directory before XLS rename
DIR /x /a-d
ECHO.
FOR %%a IN (*.xls) DO ECHO "XLS" name found: %%a
ECHO.
FOR %%a IN (*.xls) DO IF /i "%%~xa"==".xls" REN "%%a" test.xls
ECHO ============================
ECHO directory after XLS rename
DIR /x /a-d


popd
GOTO :EOF

默认情况下,名称不符合DOS“8.3”文件名约定的每个文件或目录(最多8个字符的名称,最多3个扩展名,以点分隔)将被分配一个“短名称”这符合要求。

以上代码(我使用u:\sourcedir作为测试目录)将显示步骤。请注意,dir /x显示短名称和长名称。 /a-d禁止目录名。)

所以 - 神奇的是检查fullname-extension实际 .xls