批处理:从目录

时间:2016-10-12 06:50:58

标签: batch-file

我有一个名为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

任何帮助我都会非常感激。

2 个答案:

答案 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 /flastone中命令输出的每一行最终设置为最后一行。