|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Добавить фильтр в скрипт. |
|
VBS/WSH/JS - [решено] Добавить фильтр в скрипт.
|
Новый участник Сообщения: 16 |
День добрый.
Имеется следующий скрипт (найден в просторах инета) - поворачивает файлы картинок в текущей папке и подпапках в альбомную ориентацию. Отлично работает. Необходимо добавить условие чтобы обрабатывались только файлы с текущей датой создания (либо начинать с текущая дата минус 1 день), старше файлы не обрабатывать. Как это можно добавить? <job> <script language="JScript"> var fs =new ActiveXObject("Scripting.FilesystemObject"); var gfl=new ActiveXObject("GFLAx.GFLAx"); // GFLAx Free component (c) Pierre-E Gougelet var n=0; var t= Date(); var pics=dir(".",/jpg$/i).files; // список картинок *.jpg for(i in pics) rotate(pics[i]); // их разворот WSH.echo("OK. Повернуто файлов: "+n); // ============================================================== function rotate(file) // разворот катинки { with(gfl) { LoadBitmap(file); if(Width>Height) return; Rotate(-90); // try{file.name=file.name+".bak"} catch(e){}; SaveJPEGQuality=95; SaveKeepMetadata=true; SaveBitmap(fs.GetParentFolderName(file)+"\\"+fs.GetFileName(file)); n++; } } function dir(f,filter,n) // dir.folders[] - подпапки папки f { // dir.files[] - файлы папки f var fs=new ActiveXObject("Scripting.FilesystemObject"); if(!f.files) var n=1,f={folders:[fs.GetFolder(f)],files:[]}; for(var e=new Enumerator(f.folders[n-1].files); !e.atEnd(); e.moveNext()) if(e.item().name.match(filter||"")) f.files.push(e.item()); for(var e=new Enumerator(f.folders[n-1].SubFolders); !e.atEnd(); e.moveNext()) dir(f,filter,f.folders.push(e.item())); return f; } </script> </job> |
|
Отправлено: 09:37, 06-07-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Rey71, на VBScript устроит?
Option Explicit Dim strSourceFolder Dim objFSO Dim objGFLAx Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objGFLAx = WScript.CreateObject("GFLAx.GFLAx") ScanSubFolders objFSO.GetFolder(WScript.CreateObject("WScript.Shell").CurrentDirectory) Set objGFLAx = Nothing Set objFSO = Nothing WScript.Quit 0 Sub ScanSubFolders(objFolder) Dim objFile Dim objSubFolder Dim strFilePath WScript.StdOut.WriteLine objFolder.Path For Each objFile In objFolder.Files Select Case LCase(objFSO.GetExtensionName(objFile.Name)) Case "jpg", "jpeg", "jpe" WScript.StdOut.Write vbTab With objGFLAx .LoadBitmap(objFile.Path) If .Width < .Height Then WScript.StdOut.WriteLine "+ " & objFile.Path .Rotate -90 .SaveJPEGQuality = 95 .SaveKeepMetadata = True strFilePath = objFile.Path objFile.Name = objFile.Name & ".bak" .SaveBitmap strFilePath Else WScript.StdOut.WriteLine "- " & objFile.Path End If End With Case Else ' Nothing to do End Select Next For Each objSubFolder In objFolder.SubFolders ScanSubFolders objSubFolder Next End Sub Обычно же такие вещи реализуют посредством ImageMagick. |
Отправлено: 13:39, 06-07-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Все работает. Спасибо большое.
А как в Вашем скрипте задается выбор файлов с текущей датой создания? Ткните носом в строчку, плиз ))). |
Отправлено: 07:12, 09-07-2018 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Rey71:
![]() Пробуйте: Option Explicit Dim strSourceFolder Dim objFSO Dim objGFLAx Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objGFLAx = WScript.CreateObject("GFLAx.GFLAx") ScanSubFolders objFSO.GetFolder(WScript.CreateObject("WScript.Shell").CurrentDirectory) Set objGFLAx = Nothing Set objFSO = Nothing WScript.Quit 0 Sub ScanSubFolders(objFolder) Dim objFile Dim objSubFolder Dim strFilePath WScript.StdOut.WriteLine objFolder.Path For Each objFile In objFolder.Files Select Case LCase(objFSO.GetExtensionName(objFile.Name)) Case "jpg", "jpeg", "jpe" If DateDiff("d", objFile.DateCreated, Date()) = 0 Then With objGFLAx .LoadBitmap(objFile.Path) If .Width < .Height Then WScript.StdOut.WriteLine vbTab & "+" & vbTab & objFile.Path .Rotate -90 .SaveJPEGQuality = 95 .SaveKeepMetadata = True strFilePath = objFile.Path objFile.Name = objFile.Name & ".bak" .SaveBitmap strFilePath Else WScript.StdOut.WriteLine vbTab & "-" & vbTab & objFile.Path End If End With Else WScript.StdOut.WriteLine vbTab & "*" & vbTab & objFile.Path End If Case Else ' Nothing to do End Select Next For Each objSubFolder In objFolder.SubFolders ScanSubFolders objSubFolder Next End Sub |
|
Отправлено: 10:02, 09-07-2018 | #4 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Спасибо огромное! Теперь увидел!
|
|
Отправлено: 11:37, 09-07-2018 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - [решено] Скрипт по сбору инфы о железе (помогите добавить нужное) | ZeVSalt | Скриптовые языки администрирования Windows | 11 | 28-09-2020 10:53 | |
PowerShell - Добавить прогресс бар в готовый скрипт | c4uran | Скриптовые языки администрирования Windows | 11 | 26-10-2018 20:16 | |
CMD/BAT - Исправить скрипт.. добавить сортировку выводимой информации | Alexander_88 | Скриптовые языки администрирования Windows | 7 | 14-12-2015 16:58 | |
VBS/WSH/JS - Добавить строку в VBS скрипт | antonhacktm | Скриптовые языки администрирования Windows | 5 | 14-12-2009 18:40 | |
Прочее - Помогите сделать скрипт <из контейнера AD добавить файл *.dll по определенному пути> | chernikov72 | Программирование и базы данных | 3 | 07-04-2009 20:20 |
|