批处理:从目录中选择顶部文件

3
我有一个名为config#.json的配置文件夹,其中 # 是一个两位数的15进制数字。我需要一种方法选择其中一个文件,并将其名称放入变量中。
我已经思考了一段时间,但我并不是很高级的批处理程序员。可能可以通过使用dir命令的结果来实现,例如,如果我获取第8行的最后一个条目之类的内容。我可以去掉名称中的空格,这可能会使它更容易:
 Volume in drive C is Local Disk
 Volume Serial Number is 1A97-93E9

 Directory of C:\Users\hazzj\Google Drive\Home\Stuff\Apache-Server\htdocs\launcher_profiles

12/10/2016  05:44 PM    <DIR>          .
12/10/2016  05:44 PM    <DIR>          ..
12/10/2016  05:44 PM               707 config 11.json <- this bit here
12/10/2016  05:44 PM               707 config 12.json
12/10/2016  05:44 PM               707 config 13.json
12/10/2016  05:44 PM               707 config 14.json
12/10/2016  05:44 PM               707 config 15.json
12/10/2016  05:44 PM               707 config 16.json
12/10/2016  05:44 PM               707 config 17.json
12/10/2016  05:44 PM               707 config 18.json
12/10/2016  05:44 PM               707 config 19.json
         204 File(s)        144,228 bytes
           2 Dir(s)  344,802,287,616 bytes free

任何帮助都将不胜感激。

1
可能是批处理脚本从目录中获取第一个文件名的重复问题。 - Martin Prikryl
2个回答

2
for /f "delims=" %%a in ('dir /b /a-d "yourdirectoryname" ') do set "filename=%%a"

如果您想获取目录中的最后一个文件名,那么使用dir命令是标准方法。

通过在dir命令中添加/o:d可以按日期查找最新的文件,/o:-d可以按日期查找最旧的文件,/o:n可以按名称查找最新的文件,/o:-n可以按名称查找最旧的文件。此外还有其他选项,请在提示符下键入dir /?进行查看。

例如:

for /f "delims=" %%a in ('dir /b /a-d /o-n "yourdirectoryname" ') do set "filename=%%a"

(有其他的方法)

2

这可能是最简单的答案。

@echo off
for /f "delims=" %%a in ('dir /b /a-d /on config*.json') do set lastone=%%a
echo %lastone%

基本上,您正在获取文件(/a-d)的裸(/b)目录列表(dir),按名称降序(/on)处理命令输出的每一行,在for /f中处理每一行,最后一个被设置为lastone,也就是最后一个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接