Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
NatVor
1 / 1 / 0
Регистрация: 10.04.2015
Сообщений: 17
1

Определить имя файла с самой поздней датой

10.04.2015, 13:30. Просмотров 2051. Ответов 9
Метки нет (Все метки)

Здравствуйте! Может, кто-нибудь сможет подсказать, как средствами bat-файла найти в папке файл, созданный последним (файл Х), а затем имя этого файла передать на вход следующей команде:
D:/Projects/ U:/2015/(файл Х)
Заранее благодарна за ответ
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2015, 13:30
Ответы с готовыми решениями:

Вывести на экран имя файла с самой ранней или поздней датой
добрый день! Необходимо написать командный файл windows, который в зависимости от ключа будет...

Вывести имя файла с самой последней или самой ранней датой последнего использования
Здравствуйте. Помогите с написанием bat файла. Разработать командный файл, который бы выводил в...

Вывести имя файла с самой последней или с самой ранней датой последнего использования в текущем каталоге
Всем привет! Помогите, пжл., с написанием bat файла. Нужно: разработать командный файл, который...

Открыть файл с самой поздней датой в названии
Добрый вечер всем ! Просьба помочь в решениии такого В папке Aрхивы в корне диска D лежат Excel...

Как запустить из cmd файл с самой поздней в заданной папке датой создания?
Требуется в автозагрузку кинуть bat-ник, который будет загружать excel-вский файл из папки, с самой...

9
Smitis
1630 / 339 / 41
Регистрация: 15.10.2012
Сообщений: 531
11.04.2015, 14:43 2
Windows Batch file
1
@for /f "usebackq delims=" %%f in (`dir /b /a-d /od U:\2015\*`) do @(echo "%%~f" & exit/b)
Вместо echo подставить свою команду.

П.С.
А почему слеши прямые, а не обратные?
0
ComSpec
3415 / 1959 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
11.04.2015, 14:58 3
NatVor,
1) непонятно, в какой папке искать;
2) непонятна приведённая команда: нет имени исполняемого файла, слеши вместо обратных слешей.

Поэтому за директорию, в которой нужно найти самый "молодой" файл, принята папка "U:\2015" из приведённой команды (если папка другая, то замените), а вместо выполнения этой команды в консольном окне будет выведена сама команда с именем найденного файла (когда будете применять действующую команду, в коде уберите перед ней "echo " и после неё "& pause>nul").


Код пакетного файла:

Windows Batch file
1
2
3
@for /f "tokens=2 delims=:" %%i in ('
 2^>nul dir/a-d/b/o-d/tc "U:\2015"^| findstr/lvxc:"%~nx0"^| findstr/n "^"^| findstr "^1:"
') do @echo D:/Projects/ U:/2015/%%i& pause>nul
.
1
Smitis
1630 / 339 / 41
Регистрация: 15.10.2012
Сообщений: 531
11.04.2015, 15:32 4
ComSpec, вряд ли под "созданный последним" имелась ввиду дата создания, а не дата модификации. Хотя... всё может быть.

Добавлено через 13 минут
Исправлено + исключить, на всякий случай, сам батник из обработки
Windows Batch file
1
@for /f "usebackq delims=" %%f in (`dir /b /a-d /o-d U:\2015\*`) do @(if not "%%~ff"=="%~f0" (echo "%%~f" & exit/b))
1
11.04.2015, 15:32
NatVor
1 / 1 / 0
Регистрация: 10.04.2015
Сообщений: 17
14.04.2015, 22:05  [ТС] 5
Всем большое спасибо за помощь, но пока что "эффект не возник" - батник работает, но при этом в листинге должно появиться имя найденного файла вместо %%i, но остается именно %%i и поэтому дальше параметры, которые передаются моей команде, пустые. К тому же русский шрифт не в той кодировке и из-за этого сложно разобраться, что происходит.
0
Smitis
1630 / 339 / 41
Регистрация: 15.10.2012
Сообщений: 531
14.04.2015, 23:32 6
Цитата Сообщение от NatVor Посмотреть сообщение
батник работает, но при этом в листинге должно появиться имя найденного файла вместо %%i, но остается именно %%i и поэтому дальше параметры
Значит Вы что-то не так делаете. Батник в студию!
0
NatVor
1 / 1 / 0
Регистрация: 10.04.2015
Сообщений: 17
15.04.2015, 14:11  [ТС] 7
Хорошо, выложу батник после 12.00, но там реально очень длинные пути. А то, что я неверно что-то делаю - это 100%

Добавлено через 5 часов 32 минуты
Следующий батник прекрасно работает и подставляет искомый файл в директории z:/2015
Windows Batch file
1
2
3
@for /f "tokens=2 delims=:" %%i in ('
 2^>nul dir/a-d/b/o-d/tc "z:\2015"^| findstr/lvxc:"%~nx0"^| findstr/n "^"^| findstr "^1:"
') do @echo D:/Projects/ z:/2015/%%i& pause>nul
А вот батник с моим реальным заданием уже оставляет в папке z:/2015/%i
Windows Batch file
1
2
3
4
5
@for /f "tokens=2 delims=:" %%i in ('
 2^>nul dir/a-d/b/o-d/tc "z:\2015"^| findstr/lvxc:"%~nx0"^| findstr/n "^"^| findstr "^1:"
') do @echo 
D:\R-2.12.0\bin\Rscript.exe D:\!!!_BSMFC\Projects\R\analisys_forecast_grd\BasGrdMultiHorVis_MV_GRD_archive_script.r D:/!!!_BSMFC/Projects/R/analisys_forecast_grd/AuxFiles/ D:/!!!_BSMFC/Projects/R/analisys_forecast_grd/OutputData/ D:/!!!_BSMFC/Projects/R/analisys_forecast_grd/ z:/2015/%%i& 
pause>nul
0
Smitis
1630 / 339 / 41
Регистрация: 15.10.2012
Сообщений: 531
15.04.2015, 15:28 8
Лишние переводы строк - после do @echo должно быть одной строкой
Windows Batch file
1
2
3
@for /f "tokens=2 delims=:" %%i in ('
2^>nul dir/a-d/b/o-d/tc "z:\2015"^| findstr/lvxc:"%~nx0"^| findstr/n "^"^| findstr "^1:"
') do @echo D:\R-2.12.0\bin\Rscript.exe D:\!!!_BSMFC\Projects\R\analisys_forecast_grd\BasGrdMultiHorVis_MV_GRD_archive_script.r D:/!!!_BSMFC/Projects/R/analisys_forecast_grd/AuxFiles/ D:/!!!_BSMFC/Projects/R/analisys_forecast_grd/OutputData/ D:/!!!_BSMFC/Projects/R/analisys_forecast_grd/ z:/2015/%%i & pause>nul
0
NatVor
1 / 1 / 0
Регистрация: 10.04.2015
Сообщений: 17
16.04.2015, 16:14  [ТС] 9
Большое всем спасибо, все работает - все, что после Do взяла в скобки.
0
NatVor
1 / 1 / 0
Регистрация: 10.04.2015
Сообщений: 17
23.04.2015, 20:12  [ТС] 10
После некоторого времени эксплуатации этого батника обнаружилась одна деталь: поскольку в качестве диска z:\2015 у нас подключен другой компьютер, то если мы включаем свой компьютер и запускаем батник (или он запускается из планировщика), то этот диск Z не виден и соответственно команда не выполняется, переход на следующую команду. А вот если потом просто зайти на этот диск (другой компьютер) и выйти, то после этого запускаем батник и он прекрасно все отрабатывает. Такое впечатление, что требуется некая опция для активации диска, но вот какая?
0
23.04.2015, 20:12
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2015, 20:12

Определить имя файла
Задание: Записать список всех файлов из каталога K в файл (имя файла заканчивается на цифру...

Определить имя файла
Есть Список файлов: test.txt tests.dll test2325.dll test756756.bat test64645453...

Определить разницу в месяцах и днях между самой ранней и самой поздней датами, относящимися к заданному году
Решить задачу с использованием структуры «бинарный файл» (в файле хранятся величины типа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.