我有一个名为config#.json的配置文件的文件夹,其中#是2位数的基数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
任何帮助我都会非常感激。
答案 0 :(得分:1)
for /f "delims=" %%a in ('dir /b /a-d "yourdirectoryname" ') do set "filename=%%a"
是获取该文件名的标准方法 - 如果您想要目录中的最后一个
修改dir
命令,添加/o:d
以查找最新日期/o:-d
第一个按日期/o:n
查找最后一个 - { - 1}}名称,/o:-n
名字首先 - 还有其他选项 - 请参阅提示中的dir /?
。
例如
for /f "delims=" %%a in ('dir /b /a-d /o-n "yourdirectoryname" ') do set "filename=%%a"
(还有其他方法)
答案 1 :(得分:1)
这可能是最简单的答案。
@echo off
for /f "delims=" %%a in ('dir /b /a-d /on config*.json') do set lastone=%%a
echo %lastone%
基本上,您按名称降序(/b
)获取文件(dir
)的裸(/a-d
)目录列表(/on
),处理for /f
和lastone
中命令输出的每一行最终设置为最后一行。