|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск самой старой папки и вывод разницы между датой её создания и текущей |
|
CMD/BAT - [решено] Поиск самой старой папки и вывод разницы между датой её создания и текущей
|
Новый участник Сообщения: 26 |
Профиль | Отправить PM | Цитировать Добрый день, прошу сильно не пинать, но подскажите, возможно ли такое:
Имеется несколько локальных дисков C,D,E,F,G... может быть 2-7 шт, на некоторых из них есть папка "VIDEO" в которой множество подпапок, нужно скриптом найти самую "старую" по дате создания папку среди всех подпапок в папках VIDEO всех локальных дисков где она есть, вывести дату создания той самой папки и если возможно : количество дней с момента создания до текущего момента. Структура примерно такая: X:\VIDEO\aa-bb-cc dd где: X-Буква локального диска, кол-во дисков может быть разным на разных ПК, папки VIDEO тоже может не быть на некоторых дисках aa-число от 01-31 bb-число от 01-12 cc-число от 01-10 dd-число от 01-24 В написании скриптов у меня совсем слабо, с помощью гугла поулчилось найти самую старую папку aa-bb-cc dd на каждом диске, но как их сравнить между собой не понятно... cd/d "C:\VIDEO\"&& for /f "delims=" %%i in ('2^>nul dir/A:D/B/O:D') do set folderC=%%i --- выводит имя самой старой вложенной папки на диске С |
|
Отправлено: 19:39, 09-05-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать wlad1164, Вам «самую старую» для каждого из найденных каталогов VIDEO? Или одну для всех найденных каталогов VIDEO? Если второе — то вот Вам на WSH:
Option Explicit Dim objDrive Dim objFolder Dim dtOldestDateCreated Dim objOldestFolder dtOldestDateCreated = #01/01/2100# Set objOldestFolder = Nothing With WScript.CreateObject("Scripting.FileSystemObject") For Each objDrive In .Drives If .FolderExists(objDrive.DriveLetter & ":\Video") Then For Each objFolder In .GetFolder(objDrive.DriveLetter & ":\Video").SubFolders If objFolder.DateCreated < dtOldestDateCreated Then dtOldestDateCreated = objFolder.DateCreated Set objOldestFolder = objFolder End If Next End If Next If Not objOldestFolder Is Nothing Then WScript.Echo "Path to folder: " & objOldestFolder.Path WScript.Echo "Date created: " & objOldestFolder.DateCreated WScript.Echo "Day differense: " & DateDiff("d", objOldestFolder.DateCreated, Now()) WScript.CreateObject("WScript.Shell").Run "explorer.exe """ & objOldestFolder.Path & """", 1, False Else WScript.Echo "Nothing found." WScript.Quit 1 End If End With WScript.Quit 0 |
Отправлено: 20:02, 09-05-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 26
|
Профиль | Отправить PM | Цитировать Iska, спасибо за столь скорый ответ! Но хотелось бы решения в cmd, или результат как то передать bat скрипт, просто нужно добавить этот фрагмент в текущий bat скрипт.
Еще раз спасибо что не поленились написать код |
Отправлено: 20:23, 09-05-2018 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать wlad1164, что именно — передать? Покажите код Вашего пакетного файла, укажите место, куда Вы хотите добавить новый код.
|
Отправлено: 20:27, 09-05-2018 | #4 |
Новый участник Сообщения: 26
|
Профиль | Отправить PM | Цитировать Iska, передать результат, грубо говоря в процессе работы bat вызвать wsh скрипт который отработает и вернет в bat переменную=результату своей работы, и далее продолжится выполнение bat скрипта
Что то вроде этого. test.bat --------------------------- выполнение скрипта запуск whs из bat получить результат whs скрипта в переменную bat продолжение выполнения bat скрипта --------------------------- под результатом имеется ввиду Цитата Iska:
|
||
Отправлено: 20:36, 09-05-2018 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать wlad1164, повторяю: покажите код Вашего пакетного файла, укажите место, куда Вы хотите добавить новый код.
|
Отправлено: 20:42, 09-05-2018 | #6 |
Новый участник Сообщения: 26
|
Профиль | Отправить PM | Цитировать Iska, да пример тут не имеет смысла, логика проста
Как то так, вроде все словами описал выше)))) |
Отправлено: 20:49, 09-05-2018 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать wlad1164, ну, не хотите — как хотите. Вот Вам:
Sample.vbs
Option Explicit Dim objDrive Dim objFolder Dim dtOldestDateCreated Dim objOldestFolder dtOldestDateCreated = #01/01/2100# Set objOldestFolder = Nothing With WScript.CreateObject("Scripting.FileSystemObject") For Each objDrive In .Drives If .FolderExists(objDrive.DriveLetter & ":\Video") Then For Each objFolder In .GetFolder(objDrive.DriveLetter & ":\Video").SubFolders If objFolder.DateCreated < dtOldestDateCreated Then dtOldestDateCreated = objFolder.DateCreated Set objOldestFolder = objFolder End If Next End If Next If Not objOldestFolder Is Nothing Then WScript.Echo objOldestFolder.Path End If End With WScript.Quit 0 Sample.cmd
@echo off
setlocal enableextensions enabledelayedexpansion
set /p var="Number: "
set Number=%var%
rem Тут обрабатывается все что нужно сделать в зависимости от Number
rem Здесь нужно выполнить WSH скрипт
for /f "usebackq delims=" %%i in (
`cscript.exe //nologo "%~dp0Sample.vbs"`
) do set sFolder=%%~i
if defined sFolder (
echo [%sFolder%]
rem Тут обрабатывается все что нужно сделать в зависимости от sFolder
pause
) else (
echo Nothing found
exit /b 1
)
endlocal
exit /b 0
играйтесь. |
Отправлено: 21:01, 09-05-2018 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] батник для создания папки с текущей датой + время | aggressor_ | Скриптовые языки администрирования Windows | 23 | 08-02-2018 16:02 | |
CMD/BAT - Поиск файлов *.cer с заданной датой создания | Альберт_25 | Скриптовые языки администрирования Windows | 25 | 13-08-2015 13:16 | |
CMD/BAT - Поиск и удаление папки по имени архива, её породившего | Zevs1998 | Скриптовые языки администрирования Windows | 0 | 13-03-2015 19:16 | |
CMD/BAT - архивирование файла с текущей датой | mcintosh55 | Скриптовые языки администрирования Windows | 1 | 22-12-2014 20:09 | |
CMD/BAT - [решено] Проверить наличие файла с текущей датой. | OlegStarov | Скриптовые языки администрирования Windows | 4 | 21-04-2009 12:11 |
|