Windows 批处理文件重命名多个文件仅回显结果
我在创建批处理文件(.bat)以根据特定参数重命名同一目录中的多个文件时遇到问题。为了使它适用于多个文件,我必须为它添加一个增量值 通过研究(大部分在这里),我拼凑了下面的命令,但无论我做什么,我都无法真正做到。它只是回显应该做的事情,当我从“ren”之前删除回显时,它会显示错误的语法Windows 批处理文件重命名多个文件仅回显结果,windows,batch-file,Windows,Batch File,我在创建批处理文件(.bat)以根据特定参数重命名同一目录中的多个文件时遇到问题。为了使它适用于多个文件,我必须为它添加一个增量值 通过研究(大部分在这里),我拼凑了下面的命令,但无论我做什么,我都无法真正做到。它只是回显应该做的事情,当我从“ren”之前删除回显时,它会显示错误的语法 @echo off CD C:\FolderPath\ setlocal enabledelayedexpansion set /a count=0 for /f "tokens=*" %%a in ('dir
@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
)
将第一个参数添加到ren命令(要重命名的文件): 因此,整个代码是:
@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
)
请注意,它不适用于具有奇怪名称的文件。例如,“File(name.txt”
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
@Tomalak-请仔细阅读问题。OP表示,如果删除ECHO,将导致语法错误。@dbenham哦,你是对的。删除注释+1,但为什么它不适用于有毒字符?引号应防止有毒字符。我尝试了此操作,得到了一个“系统找不到指定的路径”因此,我删除了“CD”命令,只是为了用*.bat文件所在文件夹中的文件对其进行测试,我仍然只让它回显它应该做的事情。好的。擦掉它。它可以工作。为了方便起见,我只是复制了代码,但我没有意识到,即使我在“ren”之后添加了参数,我也没有在它之前删除回显。谢谢nks.I可能弄错了,但我读这篇文章的方式是,需要使用目标路径调用.bat文件。在我的情况下,目标路径永远不会更改,.bat文件不能位于目标路径中,因此我尝试编写它(可能应该在最初的描述中添加这一点)这是一个特殊情况,
for/r
循环已经处理过。如果省略参数,%1
将为空,这意味着文件夹
将为空,此时,for/r
将采用当前目录。
rename.bat C:\FolderPath