|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Скрипт, который бы удалял во всех файлах из папки, кроме самого vbs скрипта, |
|
Любой язык - [решено] Скрипт, который бы удалял во всех файлах из папки, кроме самого vbs скрипта,
|
Новый участник Сообщения: 10 |
Прошу помощи в написании скрипта (желательно на VBS), который бы удалял во всех файлах из папки, кроме самого vbs скрипта, первые 200 байт к примеру.
|
|
Отправлено: 12:00, 06-02-2015 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать n5320, пробуйте:
Скрытый текст
Option Explicit
Const adTypeBinary = 1
Const adModeWrite = 2
Const adModeRead = 1
Const adSaveCreateOverWrite = 2
Const adReadAll = -1
Const intFileStartPos = 9255
Dim strSourceFolder
Dim objFSO
Dim objFile
Dim objStream4Read
Dim objStream4Write
If WScript.Arguments.Count = 1 Then
strSourceFolder = WScript.Arguments.Item(0)
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strSourceFolder) Then
For Each objFile In objFSO.GetFolder(strSourceFolder).Files
If Not StrComp(objFile.Name, WScript.ScriptName, vbTextCompare) = 0 Then
Set objStream4Read = WScript.CreateObject("ADODB.Stream")
Set objStream4Write = WScript.CreateObject("ADODB.Stream")
objStream4Read.Type = adTypeBinary
objStream4Write.Type = adTypeBinary
objStream4Read.Open
objStream4Write.Open
objStream4Read.LoadFromFile objFile.Path
objStream4Read.Position = intFileStartPos
objStream4Write.Write(objStream4Read.Read(adReadAll))
objStream4Write.SaveToFile objFile.Path, adSaveCreateOverWrite
objStream4Read.Close
objStream4Write.Close
Set objStream4Write = Nothing
Set objStream4Read = Nothing
End If
Next
Else
WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
WScript.Quit 1
End If
Set objFSO = Nothing
Else
WScript.Echo "Usage: " & WScript.ScriptName & " <Source folder>"
WScript.Quit 1
End If
WScript.Quit 0
Оригиналы файлов не сохраняются. Можно просто перетащить папку на скрипт в Проводнике. Цитата n5320:
Цитата n5320:
|
||
Отправлено: 16:49, 06-02-2015 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1758
|
|
Отправлено: 16:52, 06-02-2015 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Foreigner, а если сместиться на позицию 9255 в исходном файле, а затем читать из него остаток — будет быстрее или медленнее (придётся через FileStream работать, как я понимаю)?
|
Отправлено: 17:03, 06-02-2015 | #13 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Foreigner увы ваш скрипт жрет все 2 г памяти и выполнение не останавливается.
Iska, Ваш вариант работает очень быстро, нагрузка не заметно вообще, спасибо. Можете кое что еще поправить в скрипте? Мне надо в начале или в конце выполнения vbs скрипта у всех файлов в папке также удалить в имени (расширении) ".jpg". Пример Top_gir.7z.001.jpg должно получиться Top_gir.7z.001 |
Отправлено: 17:22, 06-02-2015 | #14 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата n5320:
Цитата n5320:
Пробуйте: Скрытый текст
Option Explicit
Const adTypeBinary = 1
Const adModeWrite = 2
Const adModeRead = 1
Const adSaveCreateOverWrite = 2
Const adReadAll = -1
Const intFileStartPos = 9255
Dim strSourceFolder
Dim objFSO
Dim objFile
Dim objStream4Read
Dim objStream4Write
If WScript.Arguments.Count = 1 Then
strSourceFolder = WScript.Arguments.Item(0)
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strSourceFolder) Then
For Each objFile In objFSO.GetFolder(strSourceFolder).Files
If Not StrComp(objFile.Name, WScript.ScriptName, vbTextCompare) = 0 Then
Set objStream4Read = WScript.CreateObject("ADODB.Stream")
Set objStream4Write = WScript.CreateObject("ADODB.Stream")
objStream4Read.Type = adTypeBinary
objStream4Write.Type = adTypeBinary
objStream4Read.Open
objStream4Write.Open
objStream4Read.LoadFromFile objFile.Path
objStream4Read.Position = intFileStartPos
objStream4Write.Write(objStream4Read.Read(adReadAll))
objStream4Write.SaveToFile objFile.Path, adSaveCreateOverWrite
objStream4Read.Close
objStream4Write.Close
Set objStream4Write = Nothing
Set objStream4Read = Nothing
End If
Next
For Each objFile In objFSO.GetFolder(strSourceFolder).Files
If StrComp(objFSO.GetExtensionName(objFile.Name), "jpg", vbTextCompare) = 0 Then
objFile.Name = objFSO.GetBaseName(objFile.Name)
End If
Next
Else
WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
WScript.Quit 1
End If
Set objFSO = Nothing
Else
WScript.Echo "Usage: " & WScript.ScriptName & " <Source folder>"
WScript.Quit 1
End If
WScript.Quit 0
|
||
Отправлено: 17:35, 06-02-2015 | #15 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Iska, Все работает спасибо вам и форуму
|
Отправлено: 17:43, 06-02-2015 | #16 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] скрипт который менял бы шлюз при отсутствии интернета и перезагружал бы роутер | konst_vrn@vk | Скриптовые языки администрирования Windows | 7 | 01-04-2014 03:39 | |
CMD/BAT - Удаление всех файлов из папки кроме батника | composter | Скриптовые языки администрирования Windows | 11 | 30-03-2013 08:25 | |
VBS/WSH/JS - [решено] VBS, поиск во всех файлах заданной папки и запись в файл. | vlad20 | Скриптовые языки администрирования Windows | 5 | 31-07-2012 01:52 | |
CMD/BAT - [решено] скрипт, который брал бы урл из переменной и сохралял исходный код веб страницы | campbell | Скриптовые языки администрирования Windows | 13 | 19-11-2011 05:43 | |
Любой язык - [решено] Скрипт который бы запускал 2 процесса и в случае убийства одного убивал бы и другой | iDrug | Скриптовые языки администрирования Windows | 7 | 12-10-2009 19:08 |
|