批处理文件重命名多个文件只回显结果

时间:2014-01-22 19:55:07

标签: windows batch-file

我遇到了创建批处理文件(.bat)以根据特定参数重命名同一目录中的多个文件的问题。为了实现多个文件,我必须为其添加增量值。

从研究(主要是在这里)我拼凑了下面的命令,但无论我做什么,我实际上无法做到这一点。它只是回应了应该做的事情,当我从'ren'之前删除回声时,它说错误的语法。

@echo off
CD C:\FolderPath\
setlocal enabledelayedexpansion
set /a count=0
for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
echo ren CDFF_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hr%%time:~3,2%%time:~6,2%%time:~9,2%_!count!.txt
set /a count+=1
)

2 个答案:

答案 0 :(得分:2)

将第一个参数添加到ren命令(要重命名的文件):

ren "%%a" "CDFF_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hr%%time:~3,2%%time:~6,2%%time:~9,2%_!count!.txt"

所以整个代码是:

@echo off   
setlocal enabledelayedexpansion

CD C:\FolderPath\
set /a count=0

for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
   echo ren "%%a" "CDFF_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hr%%time:~3,2%%time:~6,2%%time:~9,2%_!count!.txt"
   set /a count+=1
)

请注意,它不适用于名称奇怪的文件。例如。 “文件(name.txt”

答案 1 :(得分:0)

ren需要输入filname作为其第一个参数。因此你的语法错误。

以下是另一种实施方式:

@echo off
setlocal enabledelayedexpansion

set FOLDER=%1
set DATE=%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hr%%time:~3,2%%time:~6,2%%time:~9,2%
set /a count=0

for /r %FOLDER% %%a in (*.txt) do (
    ren "%%a" CDFF_%DATE%_!count!.txt
    set /a count += 1
)

打电话给

rename.bat C:\FolderPath