【发布时间】:2012-05-18 03:54:52
【问题描述】:
如何获取目录中最新的子文件夹?
我在MKLINK /D 命令中需要它。
谢谢
【问题讨论】:
标签: batch-file
如何获取目录中最新的子文件夹?
我在MKLINK /D 命令中需要它。
谢谢
【问题讨论】:
标签: batch-file
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%
【讨论】:
dir 之后和/b 之前进行澄清,您需要进入根目录。如果它是批处理的一部分,您也不需要回声。您可以简单地使用 %a% 变量,因为它设置的最后一个值是最新的目录。
FOR /F %%i 更改为FOR /F "delims=" %%i 以防止拆分目录名称。
对带有空格的目录名称进行了一些改进
FOR /F " tokens=*" %%i IN ('dir /b /ad-h /od') DO (SET a=%%i)
现在您将获得 a=Application Data 而不是 a=Application
注意:注意“tokens”前面的空格
【讨论】: