Вопрос по batch-file – Получить последнюю созданную команду каталога

20

Как я могу получить новейшую подпапку в каталоге?
Мне это нужно вMKLINK /D команда.

Спасибо

Ваш Ответ

2   ответа
3

Некоторое улучшение для имен dir с пробелами

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

теперь вы получаете = Application Data вместо = Application
Примечание. Обратите внимание на пространство перед "жетонами".

Еще одно улучшение, позволяющее игнорировать некоторые совпадения: DO, если не "%% i" == ". & Quot; если нет, то "%% i" == "." ЗАДАВАТЬ
48
FOR /F "delims=" %%i IN ('dir /b /ad-h /t:c /od') DO SET a=%%i
echo Most recent subfolder: %a%

(%i for windows 10)

  • /b is for bare format
  • /ad-h only directories, but not the hidden ones
  • t:c means to use the creation date for sorting (use t:w for last write date)
  • /od sort oldest first
  • The for /F executes the command and sets a to the directory name, the last one is the newest one.

Если вы выполняете это непосредственно в командной строке (не в командном файле), используйте% вместо%%.

Это работает сcurrent directory - как указал @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%
@Arthor Вы правы, команда for использует параметры по умолчанию. Вы можете изменитьFOR /F %%i вFOR /F "delims=" %%i чтобы предотвратить разделение имени каталога.
+1 Чтобы уточнить послеdir и до/b вам нужно войти в корневой каталог. Также вам не нужно эхо, если оно является частью партии. Вы можете просто использовать%a% переменная, потому что последнее значение, в котором оно было установлено, является самым новым каталогом.
@marapet Я использовал приведенный выше скрипт, однако, если в папке есть пробел, он не работает, я что-то пропустил?
@iesou. Это правильно - если вы не указали каталог, используется текущий каталог. Добавил его в ответ и предоставил слегка измененную версию.

Похожие вопросы