|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Дата создания (изменения) файла |
|
CMD/BAT - [решено] Дата создания (изменения) файла
|
Пользователь Сообщения: 72 |
Добрый день
Необходима вычислить дату изменен файла в формате (файл изменен N дней назад). Нашел здесь, но там как-то мудрено, и она не совсем рабочая. http://www.dostips.com/DtTipsDateTim...Batch.FileDate |
|
Отправлено: 13:59, 04-10-2016 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать так создания или изменения? Если изменения то все просто, например вот так:
А вот если именно создания, то тут уже придется извращаться извращениями. Например парсить вывод dir /o:d /tc |
Отправлено: 14:14, 04-10-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать Про первый вариант я знаю, но нужно именно в формате "файл изменен N дней назад"
Внес поправку нужен файл изменен |
Отправлено: 14:17, 04-10-2016 | #3 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Arsenik77, подсчет количества дней в данном случае на cmd/bat дело длительное и неблагодарное, может имеет смысл поcмотреть в сторону PS?
PS может адекватно от одной даты отнять другую, в то время как на cmd я такой возможности не знаю, кроме как вручную потрошить весь год помесячно, учитывая развчетырегодаизменчивый февраль. |
Отправлено: 14:30, 04-10-2016 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Вот VBS. Сохраните скрипт в файл .vbs, сделайте на него значок, затаскивайте Ваш файл на этот значок.
Если принципиально cmd, можно придумать, используя VBS Set Args = WScript.Arguments If Args.Count = 0 Then MsgBox "Имя файла не задано" Else FName = CStr(Args(0)) Set FSO = CreateObject("Scripting.FileSystemObject") Set InFile = FSO.GetFile(FName) iDate = DateDiff("d", InFile.DateLastModified, Now, 2, 1) MsgBox "Файл" + vbCrLf + FName + vbCrLf + "изменён " + CStr(iDate) + " дней тому назад" End If |
|
------- Отправлено: 17:21, 04-10-2016 | #5 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать megaloman, Elven, подскажите как это прикрутить к bat.
Например переменной задается файл, а в ответ требуемое количество дней . |
Отправлено: 20:22, 04-10-2016 | #6 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Arsenik77, Сложно что-то делать, если есть недоговоренности - у Вас явно задача другая, а посчитать число дней - эпизод. Поэтому прибегну к извращениям:
Батник написан в 866 кодировке
@Echo Off cls Set "FName=Z:\Box_In\Диск здоровья Грация с магнитами - мини фитнес тренажер для талии - Интернет-магазин - Городской Центр Тренажеров.mht" Set "VBS=%TEMP%\%~nx0.vbs" >"%VBS%" Echo Set Args = WScript.Arguments >>"%VBS%" Echo FName = CStr(Args(0)) >>"%VBS%" Echo Set FSO = CreateObject("Scripting.FileSystemObject") >>"%VBS%" Echo Set InFile = FSO.GetFile(FName) >>"%VBS%" Echo iDate = DateDiff("d", InFile.DateLastModified, Now, 2, 1) >>"%VBS%" Echo WScript.Echo iDate Set "iDate=False" FOR /F "usebackq" %%i IN (`cscript //Nologo "%VBS%" "%FName%" 2^>nul`) DO Set iDate=%%i Del "%VBS%" If Not "%iDate%"=="False" ( Echo Файл %FName% Echo изменён %iDate% дней тому назад ) Else ( Echo Файл %FName% не найден ) pause |
------- Последний раз редактировалось megaloman, 04-10-2016 в 21:45. Отправлено: 21:31, 04-10-2016 | #7 |
Забанен Сообщения: 793
|
Цитата Arsenik77:
<?xml : version="1.0" encoding="windows-1251"?> ^<!-- : @echo off setlocal enabledelayedexpansion for /f "tokens=1,2,3*" %%i in ( 'dir /a-d /tw ^| findstr /brc:"[0-9]"' ) do ( set "tm=%%i %%j" cscript /nologo "%~f0?.wsf" "!tm!" "%%l" ) endlocal exit /b --> <package> <job id="VBS"> <script language="VBScript"><![CDATA[ WScript.Echo "Файл " & WScript.Arguments(1) & _ " изменен " & _ DateDiff("d", CDate(WScript.Arguments(0)), Date) & _ " назад" ]]></script> </job> </package> |
|
Отправлено: 22:50, 04-10-2016 | #8 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать megaloman, Именно то, что нужно!!
|
Отправлено: 08:11, 05-10-2016 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Перенос атрибутов файлов - дата создания, изменения. | __sa__nya | Хочу все знать | 11 | 12-08-2021 14:40 | |
VBS/WSH/JS - Дата и время изменения файла | lorents | Скриптовые языки администрирования Windows | 19 | 01-02-2015 19:28 | |
CMD/BAT - [решено] Дата/время создания в имени файла | art.andr | Скриптовые языки администрирования Windows | 8 | 09-04-2012 14:39 | |
CMD/BAT - [решено] Дата изменения файла | Sat_Kelman | Скриптовые языки администрирования Windows | 1 | 19-04-2011 11:03 | |
.NET - [решено] Скачивание файла, где часть URL это дата посл. изменения лок. файла | Efsey | Программирование и базы данных | 9 | 23-08-2010 19:48 |
|