25

如何获取目录中最新的子文件夹?
我需要它来MKLINK /D指挥。

谢谢

4

2 回答 2

57
FOR /F "delims=" %%i IN ('dir /b /ad-h /t:c /od') DO SET a=%%i
echo Most recent subfolder: %a%

%i适用于 Windows 10)

  • /b用于裸格式
  • /ad-h只有目录,但不是隐藏的
  • t:c表示使用创建日期进行排序(t:w用于最后写入日期)
  • /od先排序最旧的
  • 执行for /F命令并将 a 设置为目录名称,最后一个是最新的。

如果您直接在命令行上执行此操作(而不是在批处理文件中),请%使用%%.

这适用于当前目录- 正如@iesou 指出的那样,dir如果您需要使用任何其他目录路径,则需要在之后添加目录路径。

具有指定目录路径的示例:

FOR /F "delims=" %%i IN ('dir "c:\Program Files" /b /ad-h /t:c /od') DO SET a=%%i

为了防止遍历所有子文件夹,您可以将排序顺序更改为具有最新的第一个 ( /o-d) 并在第一次调用后退出 for 循环:

@echo off
FOR /F "delims=" %%i IN ('dir /b /ad-h /t:c /o-d') DO (
    SET a=%%i
    GOTO :found
)
echo No subfolder found
goto :eof
:found
echo Most recent subfolder: %a%
于 2012-05-09T15:52:04.040 回答
5

对带有空格的目录名称进行了一些改进

FOR /F " tokens=*" %%i IN ('dir /b /ad-h /od') DO (SET a=%%i)  

现在你得到 a=Application Data 而不是 a=Application
注意:注意“tokens”前面的空格

于 2013-09-15T17:53:54.397 回答