Batch file 批量显示xml文件的最新版本

Batch file 批量显示xml文件的最新版本,batch-file,cmd,Batch File,Cmd,在一个目录中,我有一些格式如下的文件: 文件1\u v1.xml 文件\u 1\u v2.xml 文件_1_v3.xml 文件_2_v1.xml 文件_2_v1.xml 其他_文件.txt 其他目录 我只想提取版本最高的xml文件,在本例中是file_1_v3.xml和file_2_v1.xml。 我知道文件的名称,在本例中为文件1和文件2 @echo off setlocal :nextName for %%a in ("%~1*.xml") do set "lastFile=%%a"

在一个目录中,我有一些格式如下的文件:
文件1\u v1.xml
文件\u 1\u v2.xml
文件_1_v3.xml
文件_2_v1.xml
文件_2_v1.xml
其他_文件.txt
其他目录
我只想提取版本最高的xml文件,在本例中是file_1_v3.xml和file_2_v1.xml。 我知道文件的名称,在本例中为文件1和文件2

@echo off
setlocal
:nextName
   for %%a in ("%~1*.xml") do set "lastFile=%%a"
   echo Last version of %1 is %lastFile%
   shift
if "%~1" neq "" goto nextName
例如:

test.bat file_1 file_2

是否所有文件都只有两个下划线?不。它们可以有一个或多个下划线。此解决方案适用于这些测试文件,但在我的实际情况下,它不起作用。我不知道文件是如何用这个for迭代的,我在set中写了echo(在for…do之后),文件是按随机顺序打印的,而不是按字母顺序打印的。看起来for以与dir相同的顺序显示文件。我不明白顺序…它既不是按名称,也不是按大小,也不是按日期…我已经修改了您的解决方案,现在可以使用了。这里是:
@echo off setlocal:nextName for/f“delims=”%%f in('dir/b/o:n“%~1_v?.xml“)如果“%~1”neq”转到nextName,请设置“lastFile=%~nxF”echo%1的最后版本是%lastFile%shift