Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вывести 2 самых свежих файла по указаному пути

Ответить
Настройки темы
CMD/BAT - [решено] Вывести 2 самых свежих файла по указаному пути

Аватара для All!@nce

Новый участник


Сообщения: 34
Благодарности: 1


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Здравствуйте. Знатоки подскажите пожалуйста как решить такую задачу. Есть папка в которую каждый день падает по одному архиву. Нужно вывести имена двух самых свежих архивов (по дате создания или изменения), а также их размеры (желательно в КБ).

Пробовал вот таким образом но почему то не работает. Выводит все файлы...
Код: Выделить весь код
@echo off
chcp 1251 >nul

pushd "\\comp1\arh"

set num=0
for /f "delims=" %%i in ('dir /b/a-d/o-d/tw') do (
echo Файл %%i изменён %%~ti размер %%~zi
set /a num+=1
if num==2 goto NEXT )
popd

:NEXT

pause
Спасибо!

Отправлено: 14:26, 07-07-2020

 

Старожил


Сообщения: 352
Благодарности: 192

Профиль | Отправить PM | Цитировать


All!@nce,
Отформатировать примерный размер в KB можно таким способом
Код: Выделить весь код
@echo off
chcp 1251 >nul
setlocal enabledelayedexpansion

pushd "\\comp1\arh"

set num=0
for /f "delims=" %%i in ('dir /b/a-d/o-d/tw') do (
call :FormatSize %%~zi
echo Файл %%i изменён %%~ti размер ~!_formattedSize! KB
set /a num+=1
if !num!==2 goto NEXT
)

:NEXT

popd
pause
endlocal
exit /b


:FormatSize
setlocal
set in=%~1
set "formattedSize=%in:~-15,-12% %in:~-12,-9% %in:~-9,-6% %in:~-6,-3%"
for /f "tokens=*" %%_ in ("%formattedSize%") do set formattedSize=%%_
endlocal & set _formattedSize=%formattedSize%
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:48, 07-07-2020 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Contributor


Сообщения: 2703
Благодарности: 1683

Профиль | Отправить PM | Цитировать


В тыс.байтов c выделением разрядов
Код: Выделить весь код
@Echo Off
cls
>nul Chcp 1251

	Set "BoxIn=\\Server\Test1\Мой контент\Музыка\Шевчук"
	Set "Mask=*.*"
	Set /A N=4

	Set /A i=%N%
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /O:-D /T:W`) DO (
		Call :OutPut "%BoxIn%\%%f" ||GoTo :End)
	)
	:End
pause
Exit /B

:OutPut
	Set "Size=     %~z1"
	Set "Size=%Size:~0,-3%"

	Set "OutSize="
	:Begin
		Set "S=%Size:~-3%"
		If "%S%"=="   " GoTo :Continue
		Set "Size=%Size:~0,-3%"
		Set "OutSize=%S: =%'%OutSize%"
		GoTo :Begin
	:Continue
	If "%OutSize%"=="" Set "OutSize=00"
	

	Echo Файл %~nx1 изменён %~t1 размер %OutSize:~0,-1%тыс.б
	Set /A i-=1
	If %i%==0 Exit /B 1
Exit /B 0

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 07-07-2020 в 18:35.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:02, 07-07-2020 | #12


Аватара для All!@nce

Новый участник


Сообщения: 34
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


Супер. Спасибо большое, вы мне очень помогли!

Отправлено: 18:22, 07-07-2020 | #13


Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


All!@nce, вот одна команда для вашей задачи(powershell), и выводите себе результат хоть в ТБ, хоть в миллиардах байт.

Код: Выделить весь код
param(
    $path = "C:\Архивы",
    $unit = 'KB'
)cls

gci $path -file|sort LastWriteTime -des|select name, length -first 2|ft -a -h name, @{Expression={"{0:### ### ###.00}" -f($_.length/"1$unit")+" $unit"}}
Ответ:
Код: Выделить весь код
Архив Ёлочка.rar  ⁣⁣⁣1 811 310 KB
Архив Ромашка.rar 1 533 218 KB
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:25, 07-07-2020 | #14



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вывести 2 самых свежих файла по указаному пути

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Удалить 2 самых молодых файла по горячей клавише. adianisa Скриптовые языки администрирования Windows 1 24-06-2016 23:19
MySQL - [решено] вывести имя файла LAKERS824 Программирование и базы данных 1 12-07-2012 09:11
[решено] Копирование файла по заданному пути для разных типов ОС foma555 AutoIt 9 30-06-2012 11:54
CMD/BAT - [решено] Как завершить процесс по пути файла процесса? navigator19 Скриптовые языки администрирования Windows 1 21-07-2010 11:54
C/C++ - Создание файла, по указанному пути S1stem Программирование и базы данных 1 01-08-2008 04:05




 
Переход