我试图编写一个命令脚本(.cmd
文件),它将查找最新文件并重命名其扩展名。重命名最新文件的扩展名
所以,如果有:
file1.txt
file2.txt
file3.txt
而且file3.txt
是最新的,脚本应该扩展更改为.xml
,所以最终的结果将是file3.xml
。
如果我做以下,将重命名文件的扩展名:
move file3.txt file3.xml
但我不知道如何找到最新的文件,然后更改其扩展名。
我试图编写一个命令脚本(.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返回而不路径并且没有由于/B
(裸格式)的任何其他数据的匹配图案*.txt
文件名的列表进行排序,根据扭转由于/O-D /TW
,最后修改日期(最新的第一个)。
该列表按行命令FOR执行,该命令为第一个文件名执行rename命令,以更改指定目录中最新的*.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=
关闭分裂的命令DIR返回的文件名如果最新的文件在文件名中包含一个或多个空格,则使用空格向空格写入。
2^>nul
重定向,因为没有*.txt
文件在当前分别指定目录设备nul
抑制该错误消息,由此redirection operator>
与^
这里逃出,因为使用它命令内FOR中的任何错误信息。
%%~nF
表示仅文件名,没有文件扩展名,点分隔文件扩展名与文件名。
为了更好的了解所使用的命令,以及它们如何在这里工作,打开命令提示符窗口中,执行有下面的命令,并阅读完全针对每个命令非常仔细地显示所有帮助页面。
dir /?
echo /?
for /?
goto /?
ren /?
请定义*最新*。最新修改时间戳?文件名中最大的数字? –