|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Обращение к самому новому/последнему файлу в папке |
|
CMD/BAT - Обращение к самому новому/последнему файлу в папке
|
Старожил Сообщения: 345 |
В папке создаются файлы с названиями вида: log210, log211, log212 и т.д.
Как лучше указать в bat на самый новый/последний файл в папке??? Условно говоря: Program.exe /F "C:\11\log212" надо заменить C:\11\log212 на новый последний файл. |
|
Отправлено: 10:56, 06-05-2019 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Sisin, Попробуйте вариант
@Echo On cls Set "Mask=log*." Set "BoxIn=C:\11" Set "Prg="Program.exe" /F "%BoxIn%\%%f" /D "%BoxIn%" /DW" FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /O:-D /T:C`) DO ( Start " " %Prg% Exit /B ) Echo !!! Folder Or Files "%BoxIn%\%Mask%" not found Exit /B 1 Запустите его так: bat.bat >C:\kuku.txt 2>&1 Приложите файл C:\kuku.txt к сообщению для анализа @Echo On в боевом варианте надо заменить на @Echo Off, хотя это не сильно принципиально. Цитата Iska:
Файлы в студию. |
|
------- Отправлено: 16:30, 06-05-2019 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 345
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 16:41, 06-05-2019 | #12 |
Старожил Сообщения: 345
|
Профиль | Отправить PM | Цитировать Перед предложенными вариантами в батнике выполняется некая Startprogram.exe, которая создает log210, log211, log212 и т.д.
Как сделать, чтобы в начале предложенных вариантов проверялось создала ли Startprogram.exe новый файл или нет? т.е., например, запускается батник, запоминается, что последний файл в папке "C:\11\" log212, далее start /wait "" "Startprogram.exe", далее проверяется появился новый файл log213, если нет - то выход, если да - то запускаются вышепредложенные варианты: Вариант 1
@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:57, 14-05-2019 | #13 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата Sisin:
@Echo Off
cls
Set "Mask=log*."
Set "BoxIn=C:\11"
Set "Prg1="C:\Windows\System32\notepad.exe" "C:\11\log213.""
Set "Prg="Program.exe" /F "%BoxIn%\%%f" /D "%BoxIn%" /DW"
Set "OldFile="
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /O:D /T:C`) DO Set "OldFile=%%f"
%Prg1%
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /O:-D /T:C`) DO (
If /I "%%f"=="%OldFile%" (Echo !!! Last file "%BoxIn%\%OldFile%". New file not created! &Exit /B 1)
Start " " %Prg%
Exit /B
)
Echo !!! Folder Or Files "%BoxIn%\%Mask%" not found
Exit /B 2
|
|
------- Последний раз редактировалось megaloman, 14-05-2019 в 15:15. Отправлено: 15:00, 14-05-2019 | #14 |
Старожил Сообщения: 345
|
Профиль | Отправить PM | Цитировать |
Отправлено: 16:16, 14-05-2019 | #15 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Sisin, я не знаю, как работает Ваша программа Startprogram.exe, с какими ключами,откуда берётся нумерация. Я просто подменил её для примера и отладки, чтобы был понятен формат ее описания.
Цитата megaloman:
|
|
------- Последний раз редактировалось megaloman, 14-05-2019 в 16:45. Отправлено: 16:31, 14-05-2019 | #16 |
Старожил Сообщения: 345
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Я в Gui выбираю то, что мне надо и выхожу. Появляется log с числом большим на 1. |
|
Отправлено: 16:48, 14-05-2019 | #17 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 17:12, 14-05-2019 | #18 |
Старожил Сообщения: 345
|
Профиль | Отправить PM | Цитировать Запускаю батник, открывается GUI Startprogram.exe, ничего там не делаю и закрываю, новый log соответственно не создается, но Program.exe все равно обрабатывает уже обработанный log, хотя должно появиться сообщение New file not created!.
|
Отправлено: 10:28, 15-05-2019 | #19 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Sisin, Этого не может быть, в чём-то Вы искажаете код.
Вот отладочный вариант батника. Допустим, он называется bat.bat
Запустите его в виде bat.bat >C:\txt.txt 2>&1 Получившийся файл C:\txt.txt прикрепите к сообщению. @Echo On cls Set "Mask=log*." Set "BoxIn=C:\11" Set "Prg1="Startprogram.exe"" Set "Prg="Program.exe" /F "%BoxIn%\%%f" /D "%BoxIn%" /DW" Set "OldFile=" FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /O:D /T:C`) DO Set "OldFile=%%f" Echo ========OldFile "%OldFile%" Dir "%BoxIn%\%OldFile%" %Prg1% FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /O:-D /T:C`) DO ( If /I "%%f"=="%OldFile%" (Echo !!! Last file "%BoxIn%\%OldFile%". New file not created! &Exit /B 1) Echo ========NewFile "%%f" ========OldFile "%OldFile%" Dir "%BoxIn%\%%f" Echo ========Start " " %Prg% Start " " %Prg% Exit /B ) Echo !!! Folder Or Files "%BoxIn%\%Mask%" not found Exit /B 2 |
------- Отправлено: 11:02, 15-05-2019 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - [решено] Как получить доступ к файлу или папке | 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 |
|