0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 18
1

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

03.06.2018, 19:35. Показов 2047. Ответов 17
Метки нет (Все метки)

Добрый вечер всем !

Просьба помочь в решениии такого
В папке Aрхивы в корне диска D лежат Excel файлы c однотипными названиями
Архив_осн_18.05.2018_20.55.xlsm
Архив_осн_10.03.2018_10.55.xlsm
Архив_осн_12.05.2018_09.20.xlsm
Архив_осн_14.05.2018_02.30.xlsm
те путь к файлам D:\Aрхивы\Архив_осн_14.05.2018_02.30.xlsm и тд
Папка постоянно пополняется новыми архивами и задача через BAT-файл открыть самый последний архив.
BAT-файл лежит в другой директории но если необходимо то можно и в папку с архивами если проще.

Может ли BAT-файл запустить файл с последней датой в названии ? Именно по дате в названии (не по дате создания,изменения и пр ) а по дате в названии ?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2018, 19:35
Ответы с готовыми решениями:

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

Определить имя файла с самой поздней датой
Здравствуйте! Может, кто-нибудь сможет подсказать, как средствами bat-файла найти в папке файл,...

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

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

17
4072 / 2060 / 648
Регистрация: 26.04.2015
Сообщений: 6,670
03.06.2018, 22:30 2
на bat очень нудно, нужен "человеческий" sort.
0
0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 18
03.06.2018, 22:57  [ТС] 3
это сложно для BAT-файла сделать? Что то можете посоветовать в какую сторону копать ?
0
654 / 279 / 107
Регистрация: 17.03.2014
Сообщений: 681
03.06.2018, 23:17 4
svin8888, попробуйте так:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off & prompt $G & cls & setlocal EnableExtensions EnableDelayedExpansion
 
                                            :: файл сохранить в кодировке OEM (866)
                                            :: путь к папке с архивами (без завершающего СЛЕША!!!)
set "dirARX=D:\Aрхивы"
 
>"%temp%\$" (for /f "usebackq tokens=3-4 delims=_" %%a in (`dir /a-d/b "%dirARX%\*.xlsm"`) do set "d=%%a" & set "d=!d:~6,4!.!d:~3,2!.!d:~0,2!" & echo:!d!_%%b)
echo:sort files...
sort "%temp%\$" /r /o "%temp%\$2"
for /f "tokens=1-2 delims=_" %%a in ('more "%temp%\$2"') do (
  set "d=%%a" & set "d=!d:~8,2!.!d:~5,2!.!d:~0,4!_%%b"
  for /f "usebackq tokens=*" %%F in (`dir /b "%dirARX%\*!d!"`) do set "file=%%F"
  echo:last file is "%dirARX%\!file!"
  start "last" "%dirARX%\!file!"
  del "%temp%\$*"
  exit /b 0
)
echo:something wrong&pause&exit /b 1
1
0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 18
03.06.2018, 23:49  [ТС] 5
Содал папку Aрхивы в корне D
батник в кодировку 288 - вроде все сделал
но не ищет файлы - на диск d положил папку, в ней файлики создал с именами с датами
я в пример выложил - но не работает у меня пишет не найден файл
0
Вложения
Тип файла: zip Архивы.zip (17.9 Кб, 3 просмотров)
0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 18
04.06.2018, 00:03  [ТС] 6
кодировку сделал OEM 886 сорри вверху неправильно написал
0
654 / 279 / 107
Регистрация: 17.03.2014
Сообщений: 681
04.06.2018, 00:25 7
Цитата Сообщение от svin8888 Посмотреть сообщение
но не ищет файлы - на диск d положил папку
что-то с правами, после 7-й строки
Windows Batch file
7
>"%temp%\$" (for /f "usebackq tokens=3-4 delims=_" %%a in (`dir /a-d/b "%dirARX%\*.xlsm"`) do set "d=%%a" & set "d=!d:~6,4!.!d:~3,2!.!d:~0,2!" & echo:!d!_%%b)
поставьте
Windows Batch file
1
type "%temp%\$"&pause&exit
результат покажите, пожалуйста
0
0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 18
04.06.2018, 06:48  [ТС] 8
что - на что менять надо

на что - это строка
type "%temp%\$"&pause&exit

а вот куда ее вставить или заменить или добавить - не понял если честно
просто это вставить после 7 строки и все ?

Добавлено через 9 минут
сейчас так текст кода выглядит - добавил после 7 строки
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off & prompt $G & cls & setlocal EnableExtensions EnableDelayedExpansion
 
                                            :: файл сохранить в кодировке OEM (866)
                                            :: путь к папке с архивами (без завершающего СЛЕША!!!)
set "dirARX=D:\Aрхивы"
 
>"%temp%\$" (for /f "usebackq tokens=3-4 delims=_" %%a in (`dir /a-d/b "%dirARX%\*.xlsm"`) do set "d=%%a" & set "d=!d:~6,4!.!d:~3,2!.!d:~0,2!" & echo:!d!_%%b)
type "%temp%\$"&pause&exit
echo:sort files...
sort "%temp%\$" /r /o "%temp%\$2"
for /f "tokens=1-2 delims=_" %%a in ('more "%temp%\$2"') do (
  set "d=%%a" & set "d=!d:~8,2!.!d:~5,2!.!d:~0,4!_%%b"
  for /f "usebackq tokens=*" %%F in (`dir /b "%dirARX%\*!d!"`) do set "file=%%F"
  echo:last file is "%dirARX%\!file!"
  start "last" "%dirARX%\!file!"
  del "%temp%\$*"
  exit /b 0
)
echo:something wrong&pause&exit /b 1
но также пишет что файл не найден
0
654 / 279 / 107
Регистрация: 17.03.2014
Сообщений: 681
04.06.2018, 12:09 9
Цитата Сообщение от svin8888 Посмотреть сообщение
также пишет что файл не найден
после 5-й строки
Windows Batch file
5
set "dirARX=D:\Aрхивы"
добавьте
Windows Batch file
1
2
dir /a-d/b "%dirARX%\*.xlsm"
pause&exit
результат покажите, пожалуйста

ps. для выделения кода batch-скрипта следует использовать тег WBATCH:
Открыть файл с самой поздней датой в названии
0
0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 18
04.06.2018, 12:57  [ТС] 10
Вставил ваш код получилось так (кодировку проверил)
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo off & prompt $G & cls & setlocal EnableExtensions EnableDelayedExpansion
 
                                            :: файл сохранить в кодировке OEM (866)
                                            :: путь к папке с архивами (без завершающего СЛЕША!!!)
set "dirARX=D:\Aрхивы"
dir /a-d/b "%dirARX%\*.xlsm"
pause&exit
 
>"%temp%\$" (for /f "usebackq tokens=3-4 delims=_" %%a in (`dir /a-d/b "%dirARX%\*.xlsm"`) do set "d=%%a" & set "d=!d:~6,4!.!d:~3,2!.!d:~0,2!" & echo:!d!_%%b)
type "%temp%\$"&pause&exit
echo:sort files...
sort "%temp%\$" /r /o "%temp%\$2"
for /f "tokens=1-2 delims=_" %%a in ('more "%temp%\$2"') do (
  set "d=%%a" & set "d=!d:~8,2!.!d:~5,2!.!d:~0,4!_%%b"
  for /f "usebackq tokens=*" %%F in (`dir /b "%dirARX%\*!d!"`) do set "file=%%F"
  echo:last file is "%dirARX%\!file!"
  start "last" "%dirARX%\!file!"
  del "%temp%\$*"
  exit /b 0
)
echo:something wrong&pause&exit /b 1
но все равно не находит файл ... и под админом и так пробовал запускать Bat-файл "Не удается найти указанный файл" пишет

Добавлено через 11 минут
Сам файл BAT пробовал запускать в 3 вариантах местоположение:в папке с файлами *.xlsm , в корень диска D,с рабочего стола, в корень диска С - где правильнее расположить BAT-файл для запуска ?
0
654 / 279 / 107
Регистрация: 17.03.2014
Сообщений: 681
04.06.2018, 13:13 11
Цитата Сообщение от svin8888 Посмотреть сообщение
где правильнее расположить BAT-файл для запуска
в любом месте
1) остаётся последняя попытка: в первоначальном скрипте строку
Windows Batch file
5
set "dirARX=D:\Aрхивы"
заменить на
Windows Batch file
5
set "dirARX=."
2) скрипт поместить в каталог с файлами и запустить
0
4072 / 2060 / 648
Регистрация: 26.04.2015
Сообщений: 6,670
04.06.2018, 16:15 12
ладно:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
set "d=C:\папка с файлами"
 
setlocal enabledelayedexpansion
 pushd "%d%" 
  for /f "tokens=5 delims=_." %%a in ('dir /a-d/b "*.xlsm"') do if %%a gtr !yyyy! set "yyyy=%%a"
  for /f "tokens=4 delims=_." %%a in ('dir /a-d/b "*.xlsm"^|findstr /rc:"\.%yyyy%\_"') do if %%a gtr !MM! set "MM=%%a"
  for /f "tokens=3 delims=_." %%a in ('dir /a-d/b "*.xlsm"^|findstr /rc:"\.%MM%\."') do if %%a gtr !dd! set "dd=%%a"
  for /f "delims=" %%a in ('dir /a-d/b "*.xlsm"^|findstr /rc:"\_%dd%\.%MM%\.%yyyy%\_"') do echo %%a
 popd
endlocal
pause
0
0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 18
04.06.2018, 16:16  [ТС] 13
Ух получилось ! Пробовал создавать файлы с более поздней датой - ловит их
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off & prompt $G & cls & setlocal EnableExtensions EnableDelayedExpansion
 
                                            :: файл сохранить в кодировке OEM (866)
                                            :: путь к папке с архивами (без завершающего СЛЕША!!!)
::set "dirARX=D:\Aрхивы"
set "dirARX=."
 
>"%temp%\$" (for /f "usebackq tokens=3-4 delims=_" %%a in (`dir /a-d/b "%dirARX%\*.xlsm"`) do set "d=%%a" & set "d=!d:~6,4!.!d:~3,2!.!d:~0,2!" & echo:!d!_%%b)
echo:sort files...
sort "%temp%\$" /r /o "%temp%\$2"
for /f "tokens=1-2 delims=_" %%a in ('more "%temp%\$2"') do (
  set "d=%%a" & set "d=!d:~8,2!.!d:~5,2!.!d:~0,4!_%%b"
  for /f "usebackq tokens=*" %%F in (`dir /b "%dirARX%\*!d!"`) do set "file=%%F"
  echo:last file is "%dirARX%\!file!"
  start "last" "%dirARX%\!file!"
  del "%temp%\$*"
  exit /b 0
)
echo:something wrong&pause&exit /b 1
Благодарю b0gus за поддержку !
0
654 / 279 / 107
Регистрация: 17.03.2014
Сообщений: 681
04.06.2018, 16:21 14
Цитата Сообщение от svin8888 Посмотреть сообщение
Ух получилось
похоже, проблемы с кодировками, так что на будущее:
не именуйте файлы/каталоги "кириллицей", используйте english
0
4072 / 2060 / 648
Регистрация: 26.04.2015
Сообщений: 6,670
04.06.2018, 16:27 15
b0gus,
проверил ваш код на этой структуре:
Кликните здесь для просмотра всего текста

Структура папок
C:\USERS\...\DESKTOP\PAPKA
Архив_осн_10.03.2018_10.55.xlsm
Архив_осн_12.05.2018_09.20.xlsm
Архив_осн_14.01.2017_02.30.xlsm
Архив_осн_14.05.2018_02.30.xlsm
Архив_осн_18.05.2017_20.55.xlsm
Архив_осн_18.05.2018_20.55.xlsm
Архив_осн_29.01.2018_10.55.xlsm
Архив_осн_30.03.2017_10.55.xlsm

выдает правильно.
0
654 / 279 / 107
Регистрация: 17.03.2014
Сообщений: 681
04.06.2018, 16:35 16
alpap, и я также проводил тестирование на русскоязычной папке (+ с пробелами в имени), с парой-тройкой файлов с разным временем за одну дату (в имени файла) - точно выбирает самый "старый" файл )
так что предполагаю, что у ТС проблемы с кодировкой
0
alpap
04.06.2018, 16:44
  #17

Не по теме:

Цитата Сообщение от b0gus Посмотреть сообщение
с разным временем за одну дату
а я в своем варианте время не учитывал, это уж слишком, надо еще два forа добавлять, а так юзать можно.

0
412 / 175 / 26
Регистрация: 11.03.2018
Сообщений: 746
05.06.2018, 18:03 18
Цитата Сообщение от svin8888 Посмотреть сообщение
Что то можете посоветовать в какую сторону копать ?
Самый общий совет, который стоит принять во внимание -
"Не следует множить сущее без необходимости"

В данном случае это относится к формату представления даты/времени/периода;
Рекомендации по представлению даты/времени текстовой строкой давно придумали и стандартизировали ещё 30 лет назад: ISO 8601 ( Data elements and interchange formats ); последняя редакция была в 2004 году.

Вкратце:
дата 9 августа 2005 года 18 часов 31 минуты 42 секунды
должна выглядеть так: 2005-08-09T18:31:42, то есть описываться форматом YYYY-MM-DDTHH:MM:SS
или так: 20050809T183142 ( YYYYMMDDSSTHHSS )

В данном стандарте допускается отсекать справа неиспользуемые поля: YYYY-MM-DDTHH:ММ( только дата, часы и минуты); YYYY-MM-DD ( только дата ); YYYY-MM ( только год и месяц );YYYY ( только год ); YY ( только век ).
Возможен формат YYYY-DDD, где DDD - порядковый номер дня от начала года;
Возможен также формат YYYY-Www, например: 1985-W15, где 15 - порядковый номер недели от начала года.

С кириллицей в именах файлов желательно не связываться - это следующий совет.

Короче, если бы выбором имени файла занимался грамотный специалист то оно выглядело бы так:
смысловая часть - кириллица с транслитерацией в латиницу по стандарту ISO 9 ( system B ) и с нижним подчеркиванием в качестве разделителя слов
часть дата/время - по стандарту ISO 8601 без разделителей ( потому что символ ':' в Windows зарезервирован )

ARXIV_OSN_20180518T2055.xlsm

а вопрос нахождения самого позднего файла решился бы исполнением всем известного слова из трёх букв
Кликните здесь для просмотра всего текста
dir

и извлечением из списка последнего файла.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2018, 18:03

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

Ежедневное создание папок с текущей датой +1 день в названии
Помогите с решением: Задача такова, нужно создать команду, которая будет создавать автоматически...

Открыть папку с текущей датой
добрий день! Пытаюсь открыть папку с текущей датой, но не получается cd D:\%date:~-10%

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


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

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

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