2011-08-08 71 views
1

我试图编写一个命令脚本(.cmd文件),它将查找最新文件并重命名其扩展名。重命名最新文件的扩展名

所以,如果有:

file1.txt 
file2.txt 
file3.txt 

而且file3.txt是最新的,脚本应该扩展更改为.xml,所以最终的结果将是file3.xml

如果我做以下,将重命名文件的扩展名:

move file3.txt file3.xml 

但我不知道如何找到最新的文件,然后更改其扩展名。

+1

请定义*最新*。最新修改时间戳?文件名中最大的数字? –

回答

0

你可以使用下面的批处理代码:

@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 /?
相关问题