Batch file 重命名最新文件';s扩展
我正在尝试编写一个命令脚本(Batch file 重命名最新文件';s扩展,batch-file,cmd,Batch File,Cmd,我正在尝试编写一个命令脚本(.cmd文件),它将查找最新的文件并重命名其扩展名 因此,如果有: file1.txt file2.txt file3.txt 而且file3.txt是最新的,脚本应该将扩展名更改为.xml,因此最终结果将是file3.xml 如果执行以下操作,将重命名文件的扩展名: move file3.txt file3.xml 但我不知道如何找到最新的文件,然后更改其扩展名。您可以使用以下批处理代码: @echo off for /F "eol=| delims=" %%F
.cmd
文件),它将查找最新的文件并重命名其扩展名
因此,如果有:
file1.txt
file2.txt
file3.txt
而且file3.txt
是最新的,脚本应该将扩展名更改为.xml
,因此最终结果将是file3.xml
如果执行以下操作,将重命名文件的扩展名:
move file3.txt file3.xml
但我不知道如何找到最新的文件,然后更改其扩展名。您可以使用以下批处理代码:
@echo off
for /F "eol=| delims=" %%F in ('dir /B /O-D /TW "C:\Temp\Test\*.txt" 2^>nul') do (
ren "C:\Temp\Test\%%F" "%%~nF.xml"
goto :EOF
)
命令DIR返回与模式*.txt
匹配的文件名列表,由于/B
(裸格式)由于/O-D/TW
,根据上次修改日期(最新的第一个)反向排序,因此没有路径,也没有任何其他数据
此列表是为逐行执行命令处理的,该命令对第一个文件名执行重命名命令,以更改指定目录中最新的*.txt
文件的文件扩展名。由于goto:EOF
,重命名第一个文件后将退出循环和批处理文件处理EOF
是一个预定义的标签,表示文件结束
如果运行批处理文件的当前目录始终是包含文本文件的目录,则批处理文件也可以编码为:
@echo off
for /F "eol=| delims=" %%F in ('dir /B /O-D /TW *.txt 2^>nul') do (
ren "%%F" "%%~nF.xml"
goto :EOF
)
delims=
如果最新文件的文件名中包含1个或多个空格,则关闭将命令DIR返回的文件名按空格拆分为托克斯
2^>nul
将由于当前分别指定目录中没有*.txt
文件而导致的任何错误消息重定向到设备nul
,以抑制此错误消息,其中
在^
中转义,因为在FOR的命令中使用它
%%~nF
仅表示没有文件扩展名的文件名,文件扩展名与文件名之间用点分隔
为了更好地理解所使用的命令以及它们在这里的工作方式,请打开命令提示符窗口,在那里执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面
dir/?
echo/?
获取/?
goto/?
ren/?