Эквивалент для ls -t
в ОС Windows cmd
может быть:
dir /B /TC /OD /A-D
- отсортировано (см /OD
) по дате создания & времени (см /TC
);
dir /B /TW /OD /A-D
- сортирован (см /OD
) по последней записи даты & времени (см /TW
): то же самое, если /T
переключатель опущен на всех.
head -n 1
эквивалент: чтобы получить самую последнюю имя файла (добавить /TC
переключатель при желании), то есть последний элемент в dir /b
выходе переменной:
for /F "delims=" %G in ('dir /B /OD /A-D') do set "_lastfile=%~G"
Следующая .bat
должен работать (примечание удвоилась %
в имя переменной цикла %%G
) и добавьте строку, содержащую имя файла (включая расширение, если нет, путь) недавно измененного файла из текущего каталога в ..\latestfile.txt
. Здесь ..\
означает родительскую папку текущего каталога.
@echo OFF
setlocal EnableExtensions
set "_lastfile=" empty the `_lastfile` variable
for /F "delims=" %%G in ('dir /B /OD /A-D') do set "_lastfile=%%~G"
>> ..\latestfile.txt echo(%_lastfile%
Чтобы добавить полное имя файла, измените последнюю строку следующим образом:
>> ..\latestfile.txt echo(%CD%\%_lastfile%
Ресурсы (требуется для чтения):
Это не сценарий, это одна команда. Я предлагаю вам ознакомиться с документацией среды оболочки, которую вы хотите использовать на платформе MS-Windows. Это должно показать вам, какие команды доступны там и какие опции распознаются. – arkascha
Ответ @foxidrive кажется лучшим, когда вы не можете развить систему. PowerShell - это более сложное решение, приятное, когда вам приходится много делать в окнах. –