我有一个包含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.
有人能告诉我怎么做吗?我是批处理文件的新手。
答案 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
。