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

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

Ответить
Настройки темы
CMD/BAT - Обращение к самому новому/последнему файлу в папке

Аватара для Sisin

Старожил


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

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


В папке создаются файлы с названиями вида: log210, log211, log212 и т.д.

Как лучше указать в bat на самый новый/последний файл в папке???

Условно говоря: Program.exe /F "C:\11\log212" надо заменить C:\11\log212 на новый последний файл.

Отправлено: 10:56, 06-05-2019

 

Ветеран


Contributor


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

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


Sisin, «новый/последний» — по дате создания или по дате последней модификации?

Отправлено: 11:35, 06-05-2019 | #2



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

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


Аватара для Sisin

Старожил


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

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


Цитата Iska:
по дате создания или по дате последней модификации? »
По дате создания. Файлы создаются и не меняются.
Можно по числу в названии после log. Оно только увеличивается.

Отправлено: 11:36, 06-05-2019 | #3


Ветеран


Contributor


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

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


Файлы действительно не имеют расширения и всегда имеют log в начале имени?
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=C:\11
set sMask=log*.

if exist "%sSourceFolder%\." (
	for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:-d /o:d /t:c "%sSourceFolder%\%sMask%"`) do (
		set sLastFile=%%~i
	)
	
	if defined sLastFile (
		"Program.exe" /F "%sSourceFolder%\!sLastFile!"
	) else (
		echo Nothing found.
		exit /b 2
	)
) else (
	echo Can't find source folder [%sSourceFolder%].
	exit /b 1
)

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

Отправлено: 12:37, 06-05-2019 | #4


Ветеран


Contributor


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

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


То же, но без If
Код: Выделить весь код
@Echo Off
cls
	Set "Prg="Program.exe" /F"

	Set "Mask=log*."
	Set "BoxIn=C:\11"
	
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /O:-D /T:C`) DO (
		Start " " %Prg% "%BoxIn%\%%f"
		Exit /B
	)
	Echo !!! Folder Or Files "%BoxIn%\%Mask%" not found
Exit /B 1

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

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

Отправлено: 15:00, 06-05-2019 | #5


Аватара для Sisin

Старожил


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

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


megaloman, а как в Вашем варианте дописать ключи такого вида:

Program.exe /F "C:\11\log212" /D "C:\11" /DW

В варианте от ISKA я разобрался, а тут не срабатывает.

Отправлено: 15:24, 06-05-2019 | #6


Ветеран


Contributor


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

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


Цитата Sisin:
а как в Вашем варианте дописать ключи такого вида:
Program.exe /F "C:\11\log212" /D "C:\11" /DW »
Например, так (не проверялось):
Код: Выделить весь код
Set "Prg=Program.exe"
…
Start "" "%Prg%" /F "%BoxIn%\%%f" /D "%BoxIn%" /DW
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:39, 06-05-2019 | #7


Аватара для Sisin

Старожил


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

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


Iska, я также и сделал, но не сработало почему-то.

Отправлено: 15:43, 06-05-2019 | #8


Ветеран


Contributor


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

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


Sisin, теоретически возможно (не проверялось), что параметр «/D "…"» поглощает команда start.

Отправлено: 15:57, 06-05-2019 | #9


Аватара для Sisin

Старожил


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

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


Цитата Iska:
Sisin, теоретически возможно (не проверялось), что параметр «/D "…"» поглощает команда start. »
Нет, это я убирал.

Отправлено: 16:00, 06-05-2019 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - [решено] Как получить доступ к файлу или папке Vadikan Microsoft Windows 2000/XP 493 16-12-2017 11:16
Доступ - [решено] Права доступа к файлу в папке Windows\System32 jokeroto Microsoft Windows 7 28 27-11-2014 21:08
CMD/BAT - [решено] Задать атрибуты файлу/папке через скрипт Habetdin Скриптовые языки администрирования Windows 15 21-11-2013 17:53
VBS/WSH/JS - [решено] Присвоить атрибуты файлу/папке через скрипт boss911 Скриптовые языки администрирования Windows 4 10-11-2009 06:19
[решено] Обращение к папке ManHack Хочу все знать 3 05-06-2008 14:24




 
Переход