获取最后创建的目录批处理命令

问题描述:

如何获取目录中最新的子文件夹?
我需要它在MKLINK /D命令。获取最后创建的目录批处理命令

由于

+0

http://stackoverflow.com/questions/17237324/how-to- find-the-last-directory-created-in-batch/20149008#20149008 – Farah

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

%i窗户10)

  • /b为裸格式
  • /ad-h只有目录,而不是隐藏的人
  • t:c表示使用排序的创建日期(使用t:w去年写日期)
  • /od那种最古老的第一
  • for /F执行该命令,并设置为目录名,最后一个是最新的一个。

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

这适用于当前目录 - 正如@ youou指出,如果需要使用任何其他目录路径,则需要在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% 
+3

+1为了说明'dir'和'/ b'之前你需要输入根目录。如果它是批次的一部分,也不需要回显。您可以简单地使用'%a%'变量,因为它设置的最后一个值是最新的目录。 – iesou

+0

@iesou这是正确的 - 如果您不指定目录,则使用当前目录。将它添加到答案中,并提供了一个稍微修改的版本。 – marapet

+0

@marapet我已经使用了上面的脚本,但是如果文件夹中有一个空格,它不起作用,我错过了什么吗? – Arthor

一些改进目录名称用空格

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

现在你会得到一个=应用程序数据,而不是=应用程序
注:在“标记”前要注意空间

+0

忽略一些匹配的另一个改进是:如果不是“%% i”==“..”,如果不是“%% i”==“。组 – Thomas