0

我想使用批处理脚本重命名文件。

这些文件当前命名如下:

pkg_mon_doc_kpps_01.html
pkg_mon_doc_kpps_10.html
pkg_mon_doc_kpps_02.html

我想将它们更改为:

data_1.xls
data_2.xls
data_3.xls

我制作了批处理文件,当我运行脚本时,重命名成功但出现警告

我的批处理脚本:

@echo off
set count=0
:: Getting number of files
for %%x in (folder\*.html) do (set /a count+=1)

:: Renaming files
for /l %%a in (1,1,%count%) do (ren folder\*.html data_%%a.xls)
pause

警告

A duplicate file name exists, or the file cannot be found.
A duplicate file name exists, or the file cannot be found.
A duplicate file name exists, or the file cannot be found.
Press any key to continue . . .

怎么了?谢谢之前:)

4

3 回答 3

2

试试这个:

:: Renaming files
for %%a in (folder\*.html) do (
    set /a count+=1
    set "fname=%%~a"
    setlocal enabledelayedexpansion
    ren "!fname!" data_!count!.xls
    endlocal
)

以及没有的解决方案delayed expansion

for /f "tokens=1*delims=:" %%a in ('dir /b /a-d folder\*.html^|findstr /n $') do ren "folder\%%~b" data_%%a.xls
于 2013-09-17T09:13:10.560 回答
0

您要求一次重命名文件夹中的所有文件 ( ren folder\*.html data_%%a.xls)

所以所有 *.html 都重命名为 data_1.xls。

您需要一个循环来一个一个地重命名文件。

于 2013-09-17T09:09:00.297 回答
0

你必须结合你的循环:

@echo off
setlocal
set "count=0"
for %%x in (folder\*.html) do (
    set /a "count+=1"
    call ren "%%x" "data_%%count%%.xls"
)
endlocal
pause
于 2013-09-17T09:13:01.953 回答