[Batch/VBS] Распаковка архивов WinRAR VBS/Batch

  • Автор темы Автор темы MeowCat
  • Дата начала Дата начала

Переводчик Google

MeowCat

Новый пользователь
Сообщения
11
Реакции
0
Напиши vbs скрипт для распаковки файла.rar в папку C:\1, если архив под паролем 12345
 
Для распаковки файлов .rar с использованием VBS-скрипта, вам понадобится программа, которая может это сделать. Одним из популярных инструментов для работы с архивами формата RAR является WinRAR. Предположим, что WinRAR установлен на вашем компьютере и его путь добавлен в системную переменную PATH.

Вот пример VBS-скрипта, который распаковывает файл .rar в указанную папку с использованием пароля:

Код:
Dim shell
Set shell = CreateObject("WScript.Shell")

' Укажите путь к вашему архиву
Dim rarFile
rarFile = "C:\path\to\your\archive.rar"

' Укажите папку для распаковки
Dim outputFolder
outputFolder = "C:\1"

' Укажите пароль
Dim password
password = "12345"

' Команда для распаковки
Dim command
command = "winrar x -p" & password & " """ & rarFile & """ """ & outputFolder & """"

' Выполнение команды
shell.Run command, 0, True

Set shell = Nothing

### Объяснение кода:
1. Создание объекта WScript.Shell: Это позволяет выполнять команды системы.
2. Указание пути к архиву: Замените C:\path\to\your\archive.rar на фактический путь к вашему RAR-файлу.
3. Указание папки для распаковки: Папка C:\1 будет использоваться для распаковки содержимого архива.
4. Пароль: Указан пароль для архива.
5. Команда для распаковки: Используется команда WinRAR для распаковки архива с указанным паролем.
6. Выполнение команды: Скрипт выполняет команду и ждет ее завершения.

### Как использовать:
1. Скопируйте этот код в текстовый редактор (например, Блокнот).
2. Сохраните файл с расширением .vbs, например, extract.vbs.
3. Убедитесь, что путь к WinRAR добавлен в системную переменную PATH. Если это не так, замените winrar на полный путь к исполняемому файлу WinRAR, например, C:\Program Files\WinRAR\winrar.exe.
4. Запустите созданный VBS-файл.

Если у вас есть дополнительные вопросы или нужна помощь с чем-то другим, дайте знать!
 
Какой будет vbs скрипт для распаковки файла.zip в папку C:\1, если я буду использовать системный zip-архиватор, а именно "сжатая zip папка" ?
 
Какой будет vbs скрипт для распаковки файла.zip в папку C:\1, если я буду использовать системный zip-архиватор, а именно "сжатая zip папка" ?
Чтобы создать VBS-скрипт для распаковки ZIP-файла с использованием встроенного в Windows инструмента "Сжатая ZIP-папка", вы можете воспользоваться объектом Shell. Вот пример такого скрипта:

Код:
Dim objShell
Dim sourceZip
Dim destinationFolder

sourceZip = "C:\путь\к\вашему\файлу.zip" ' Укажите путь к вашему ZIP-файлу
destinationFolder = "C:\1" ' Укажите путь к папке, куда нужно распаковать

Set objShell = CreateObject("Shell.Application")

' Создаем объект для ZIP-файла
Set zipFile = objShell.NameSpace(sourceZip)

' Проверяем, существует ли ZIP-файл
If Not zipFile Is Nothing Then
    ' Распаковываем содержимое ZIP-файла в указанную папку
    objShell.NameSpace(destinationFolder).CopyHere(zipFile.Items)
Else
    WScript.Echo "ZIP-файл не найден."
End If

' Освобождаем память
Set zipFile = Nothing
Set objShell = Nothing

### Объяснение кода:
1. Создание объекта Shell: Мы создаем объект Shell.Application, который позволяет работать с файловой системой.
2. Определение переменных: Указываем путь к ZIP-файлу и папке назначения.
3. Проверка существования ZIP-файла: Если файл существует, мы используем метод CopyHere для распаковки содержимого ZIP-файла в указанную папку.
4. Освобождение ресурсов: В конце скрипта освобождаем память, устанавливая объекты в Nothing.

### Важно:
  • Убедитесь, что у вас есть права на чтение ZIP-файла и запись в целевую папку.
  • Если ZIP-файл защищен паролем, этот метод не сможет его распаковать.

Если у вас есть дополнительные вопросы или нужны уточнения, пожалуйста, дайте знать!
 
Добавлю
 
Добавлю
Похоже, вы хотите добавить ссылки на посты, связанные с кодом VBScript и распаковкой архивов с помощью командной строки. Если вам нужна помощь с этими темами, дайте знать, и я постараюсь предоставить полезную информацию или объяснения.

Вот краткое описание каждой темы:

1. VBScript: Это язык сценариев, который часто используется для автоматизации задач в Windows. Если вам нужны примеры кода или объяснения, как использовать VBScript, дайте знать.

2. Распаковка архивов с помощью командной строки: Вы можете использовать утилиты, такие как WinRAR или другие инструменты, для работы с архивами через командную строку. Если вам нужно больше информации о том, как это сделать, или примеры команд, пожалуйста, уточните.

Если у вас есть конкретные вопросы или задачи, которые вы хотите обсудить, напишите, и я помогу вам!
 
Какой будет vbs скрипт для распаковки файла.zip в папку C:\1, если я буду использовать системный zip-архиватор, а именно "сжатая zip папка" ? При этом vbs скрипт должен соблюдать условие, а именно, проверять: существуют ли уже файлы, которые нужно распаковать из файла.zip в папке C:\1
 
Какой будет vbs скрипт для распаковки файла.zip в папку C:\1, если я буду использовать системный zip-архиватор, а именно "сжатая zip папка" ? При этом vbs скрипт должен соблюдать условие, а именно, проверять: существуют ли уже файлы, которые нужно распаковать из файла.zip в папке C:\1
Для создания VBS-скрипта, который будет распаковывать файл ZIP в указанную папку и проверять наличие файлов в целевой папке, вы можете использовать следующий код:

Код:
Option Explicit

Dim zipFilePath, targetFolder, fso, zip, shell, file, filesExist
zipFilePath = "C:\path\to\your\file.zip" ' Укажите путь к вашему zip-файлу
targetFolder = "C:\1" ' Папка для распаковки

Set fso = CreateObject("Scripting.FileSystemObject")
Set shell = CreateObject("Shell.Application")

' Проверяем, существует ли папка для распаковки
If Not fso.FolderExists(targetFolder) Then
    fso.CreateFolder(targetFolder)
End If

' Проверяем, существуют ли файлы в целевой папке
filesExist = False
For Each file In fso.GetFolder(targetFolder).Files
    If LCase(fso.GetFileName(zipFilePath)) = LCase(fso.GetFileName(file.Name)) Then
        filesExist = True
        Exit For
    End If
Next

If filesExist Then
    WScript.Echo "Файлы уже существуют в папке " & targetFolder
Else
    ' Распаковываем zip-файл
    Set zip = shell.NameSpace(zipFilePath)
    If Not zip Is Nothing Then
        shell.NameSpace(targetFolder).CopyHere(zip.Items)
        WScript.Echo "Распаковка завершена."
    Else
        WScript.Echo "Не удалось открыть zip-файл."
    End If
End If

' Освобождаем ресурсы
Set zip = Nothing
Set shell = Nothing
Set fso = Nothing

### Объяснение кода:
1. Объявление переменных: Определяются переменные для пути к ZIP-файлу и папки назначения.
2. Проверка существования папки: Если папка не существует, она создается.
3. Проверка существования файлов: Скрипт проходит по всем файлам в целевой папке и проверяет, существуют ли уже файлы с таким же именем, как в ZIP-архиве.
4. Распаковка: Если файлы не существуют, ZIP-файл распаковывается в указанную папку с помощью метода CopyHere.
5. Вывод сообщений: Используются сообщения для информирования о процессе.

### Важно:
  • Убедитесь, что путь к ZIP-файлу указан правильно.
  • Если вы хотите проверять наличие всех файлов из ZIP-архива, необходимо модифицировать логику проверки.

Если у вас есть дополнительные вопросы или требуется изменить функциональность, дайте знать!
 
Какой будет vbs скрипт для распаковки файла.zip в папку C:\1, если я буду использовать системный zip-архиватор, а именно "сжатая zip папка" ? После распаковки скрипт должен удалить файл.zip без запроса на удаление.
 
Какой будет vbs скрипт для распаковки файла.zip в папку C:\1, если я буду использовать системный zip-архиватор, а именно "сжатая zip папка" ? После распаковки скрипт должен удалить файл.zip без запроса на удаление.
Для распаковки файла .zip в папку C:\1 с использованием системного архиватора Windows и удаления файла после распаковки, вы можете использовать следующий VBS скрипт:

Код:
Option Explicit

Dim objShell, zipFile, destinationFolder

' Укажите путь к zip-файлу и папке назначения
zipFile = "C:\path\to\your\file.zip" ' Замените на ваш путь к zip-файлу
destinationFolder = "C:\1"

' Создайте объект Shell
Set objShell = CreateObject("Shell.Application")

' Распакуйте zip-файл
objShell.Namespace(destinationFolder).CopyHere objShell.Namespace(zipFile).Items

' Подождите, пока распаковка завершится
WScript.Sleep 2000 ' Задержка в 2 секунды (можно увеличить, если нужно)

' Удалите zip-файл
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(zipFile) Then
    fso.DeleteFile(zipFile, True) ' Удаление файла без запроса
End If

' Освобождение ресурсов
Set fso = Nothing
Set objShell = Nothing

### Пояснение:

1. Объект Shell: Мы создаем объект Shell.Application, который позволяет нам работать с системными функциями Windows, включая работу с файлами и папками.

2. Пути к файлам: Вам нужно указать путь к вашему zip-файлу в переменной zipFile и путь к папке, куда вы хотите распаковать файлы, в переменной destinationFolder.

3. Распаковка: Метод CopyHere используется для распаковки содержимого zip-файла в указанную папку.

4. Задержка: WScript.Sleep используется для установки небольшой задержки, чтобы убедиться, что распаковка завершится, прежде чем мы попытаемся удалить zip-файл. Вы можете увеличить время задержки, если у вас большие архивы.

5. Удаление файла: Мы используем объект FileSystemObject для удаления zip-файла без запроса.

### Вопросы:
Если вам нужно внести изменения в скрипт, например, изменить пути или добавить дополнительные функции, дайте знать!
 
Как VBS скрипт может удалить сам себя?
 
Как VBS скрипт может удалить сам себя?
Удаление самого себя VBS-скриптом — это интересная задача, которую можно реализовать с помощью нескольких шагов. Однако важно помнить, что удаление файлов, особенно программных, может привести к потере данных или нарушению работы системы. Убедитесь, что вы понимаете последствия и используете этот код только в безопасной среде.

Вот пример, как можно написать VBS-скрипт, который удаляет сам себя:

Код:
Dim fso, scriptPath

' Создаем объект FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")

' Получаем путь к текущему скрипту
scriptPath = WScript.ScriptFullName

' Удаляем файл
fso.DeleteFile(scriptPath)

### Объяснение:

1. Создание объекта FileSystemObject: Этот объект предоставляет методы для работы с файловой системой.
2. Получение пути к скрипту: WScript.ScriptFullName возвращает полный путь к исполняемому VBS-скрипту.
3. Удаление файла: Метод DeleteFile удаляет файл по указанному пути.

### Важно:

  • Убедитесь, что скрипт не запущен из среды, которая может блокировать его удаление (например, если он запущен из редактора кода).
  • Если вы хотите протестировать этот код, создайте резервную копию или выполняйте его в тестовой среде.

Если у вас есть другие вопросы или вам нужна дополнительная помощь, дайте знать!
 
Интересно знать - для какой цели
Скрипт каждый раз распаковывает один и тот же архив если его добавить в планировщик задач, что не очень удобно, т.к при первой отработки он распаковывает архив, а когда отрабатывает второй раз он спрашивает о замене файлов. Поэтому мне проще чтобы он выполнил задачу и стер сам себя. Нет времени контролировать этот процесс. Компания большая, клиентских ПК много, не хочу тратить время :)
 
если его добавить в планировщик задач, что не очень удобно
тогда правильней удалить задачу на запуск скрипта, имхо.

А если удалить скрипт и не удалить задачу, то просто будет выскакивать ошибка.
 
Удаление задания:
Код:
taskName = "имя задания"
CreateObject("WScript.Shell").Exec("schtasks /delete /tn """ & taskName & """ /f")
 
Удаление задания:
Код:
taskName = "имя задания"
CreateObject("WScript.Shell").Exec("schtasks /delete /tn """ & taskName & """ /f")
Ваш код на VBScript для удаления задания в планировщике задач выглядит почти правильно, но есть небольшие нюансы, которые стоит учесть. Давайте разберем его по частям и внесем необходимые исправления.

Вот исправленный вариант вашего кода:

Код:
taskName = "имя задания"
CreateObject("WScript.Shell").Exec("schtasks /delete /tn """ & taskName & """ /f")

### Объяснение:

1. Использование кавычек: Ваша строка " - это HTML-сущность для кавычек. В VBScript вам нужно использовать обычные двойные кавычки ("). Чтобы правильно вставить кавычки в команду, используйте тройные кавычки (""").

2. Команда schtasks: Команда schtasks /delete /tn "имя задания" /f используется для удаления задания. Параметр /f указывает на то, что удаление должно происходить без подтверждения.

### Пример использования:

Если у вас есть задание с именем "МоеЗадание", ваш код будет выглядеть так:

Код:
taskName = "МоеЗадание"
CreateObject("WScript.Shell").Exec("schtasks /delete /tn """ & taskName & """ /f")

### Вопросы для уточнения:

1. Убедитесь, что вы запускаете этот скрипт с необходимыми правами, так как для удаления заданий могут потребоваться права администратора.
2. У вас есть конкретное задание, которое вы хотите удалить? Если да, то каково его имя? Это поможет мне дать более целенаправленные советы.
 
Для распаковки файла .zip в папку C:\1 с использованием системного архиватора Windows и удаления файла после распаковки, вы можете использовать следующий VBS скрипт:

Код:
Option Explicit

Dim objShell, zipFile, destinationFolder

' Укажите путь к zip-файлу и папке назначения
zipFile = "C:\path\to\your\file.zip" ' Замените на ваш путь к zip-файлу
destinationFolder = "C:\1"

' Создайте объект Shell
Set objShell = CreateObject("Shell.Application")

' Распакуйте zip-файл
objShell.Namespace(destinationFolder).CopyHere objShell.Namespace(zipFile).Items

' Подождите, пока распаковка завершится
WScript.Sleep 2000 ' Задержка в 2 секунды (можно увеличить, если нужно)

' Удалите zip-файл
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(zipFile) Then
    fso.DeleteFile(zipFile, True) ' Удаление файла без запроса
End If

' Освобождение ресурсов
Set fso = Nothing
Set objShell = Nothing

### Пояснение:

1. Объект Shell: Мы создаем объект Shell.Application, который позволяет нам работать с системными функциями Windows, включая работу с файлами и папками.

2. Пути к файлам: Вам нужно указать путь к вашему zip-файлу в переменной zipFile и путь к папке, куда вы хотите распаковать файлы, в переменной destinationFolder.

3. Распаковка: Метод CopyHere используется для распаковки содержимого zip-файла в указанную папку.

4. Задержка: WScript.Sleep используется для установки небольшой задержки, чтобы убедиться, что распаковка завершится, прежде чем мы попытаемся удалить zip-файл. Вы можете увеличить время задержки, если у вас большие архивы.

5. Удаление файла: Мы используем объект FileSystemObject для удаления zip-файла без запроса.

### Вопросы:
Если вам нужно внести изменения в скрипт, например, изменить пути или добавить дополнительные функции, дайте знать!
После запуска скрипта получаю ошибку: Ошибка: Требуется объект: 'Namespace(...)' . Как это исправить?
 
После запуска скрипта получаю ошибку: Ошибка: Требуется объект: 'Namespace(...)' . Как это исправить?
Ошибка "Требуется объект: 'Namespace(...)" указывает на то, что скрипт не может найти указанный zip-файл или папку назначения. Давайте проверим несколько моментов, чтобы исправить эту проблему.

### Шаги для исправления:

1. Проверьте путь к zip-файлу:
Убедитесь, что путь к zip-файлу указан правильно. Например, если ваш файл находится по адресу C:\Users\ВашеИмя\Downloads\file.zip, убедитесь, что вы указали этот полный путь в переменной zipFile.

Пример:
Код:
vbscript
   zipFile = "C:\Users\ВашеИмя\Downloads\file.zip"

2. Проверьте существование zip-файла:
Перед запуском скрипта убедитесь, что zip-файл действительно существует по указанному пути. Вы можете сделать это, просто перейдя к этому пути в проводнике.

3. Проверьте папку назначения:
Убедитесь, что папка назначения (C:\1 в вашем случае) существует. Если папка не существует, создайте её вручную или добавьте код для её создания в скрипт.

Пример для создания папки:
Код:
vbscript
   If Not fso.FolderExists(destinationFolder) Then
       fso.CreateFolder(destinationFolder)
   End If

4. Полный пример с проверкой существования:
Вот обновленный скрипт, который включает проверку существования папки и файла:

Код:
vbscript
   Option Explicit

   Dim objShell, zipFile, destinationFolder, fso

   ' Укажите путь к zip-файлу и папке назначения
   zipFile = "C:\Users\ВашеИмя\Downloads\file.zip" ' Замените на ваш путь к zip-файлу
   destinationFolder = "C:\1"

   ' Создайте объект Shell и FileSystemObject
   Set objShell = CreateObject("Shell.Application")
   Set fso = CreateObject("Scripting.FileSystemObject")

   ' Проверьте, существует ли zip-файл
   If fso.FileExists(zipFile) Then
       ' Проверьте, существует ли папка назначения, если нет, создайте её
       If Not fso.FolderExists(destinationFolder) Then
           fso.CreateFolder(destinationFolder)
       End If

       ' Распакуйте zip-файл
       objShell.Namespace(destinationFolder).CopyHere objShell.Namespace(zipFile).Items

       ' Подождите, пока распаковка завершится
       WScript.Sleep 2000 ' Задержка в 2 секунды (можно увеличить, если нужно)

       ' Удалите zip-файл
       fso.DeleteFile(zipFile, True) ' Удаление файла без запроса
   Else
       MsgBox "Файл не найден: " & zipFile, vbExclamation, "Ошибка"
   End If

   ' Освобождение ресурсов
   Set fso = Nothing
   Set objShell = Nothing

### Вопрос:
Попробуйте обновленный скрипт и дайте знать, если ошибка всё ещё возникает или если есть другие вопросы!
 
Ошибка "Требуется объект: 'Namespace(...)" указывает на то, что скрипт не может найти указанный zip-файл или папку назначения. Давайте проверим несколько моментов, чтобы исправить эту проблему.

### Шаги для исправления:

1. Проверьте путь к zip-файлу:
Убедитесь, что путь к zip-файлу указан правильно. Например, если ваш файл находится по адресу C:\Users\ВашеИмя\Downloads\file.zip, убедитесь, что вы указали этот полный путь в переменной zipFile.

Пример:
Код:
vbscript
   zipFile = "C:\Users\ВашеИмя\Downloads\file.zip"

2. Проверьте существование zip-файла:
Перед запуском скрипта убедитесь, что zip-файл действительно существует по указанному пути. Вы можете сделать это, просто перейдя к этому пути в проводнике.

3. Проверьте папку назначения:
Убедитесь, что папка назначения (C:\1 в вашем случае) существует. Если папка не существует, создайте её вручную или добавьте код для её создания в скрипт.

Пример для создания папки:
Код:
vbscript
   If Not fso.FolderExists(destinationFolder) Then
       fso.CreateFolder(destinationFolder)
   End If

4. Полный пример с проверкой существования:
Вот обновленный скрипт, который включает проверку существования папки и файла:

Код:
vbscript
   Option Explicit

   Dim objShell, zipFile, destinationFolder, fso

   ' Укажите путь к zip-файлу и папке назначения
   zipFile = "C:\Users\ВашеИмя\Downloads\file.zip" ' Замените на ваш путь к zip-файлу
   destinationFolder = "C:\1"

   ' Создайте объект Shell и FileSystemObject
   Set objShell = CreateObject("Shell.Application")
   Set fso = CreateObject("Scripting.FileSystemObject")

   ' Проверьте, существует ли zip-файл
   If fso.FileExists(zipFile) Then
       ' Проверьте, существует ли папка назначения, если нет, создайте её
       If Not fso.FolderExists(destinationFolder) Then
           fso.CreateFolder(destinationFolder)
       End If

       ' Распакуйте zip-файл
       objShell.Namespace(destinationFolder).CopyHere objShell.Namespace(zipFile).Items

       ' Подождите, пока распаковка завершится
       WScript.Sleep 2000 ' Задержка в 2 секунды (можно увеличить, если нужно)

       ' Удалите zip-файл
       fso.DeleteFile(zipFile, True) ' Удаление файла без запроса
   Else
       MsgBox "Файл не найден: " & zipFile, vbExclamation, "Ошибка"
   End If

   ' Освобождение ресурсов
   Set fso = Nothing
   Set objShell = Nothing

### Вопрос:
Попробуйте обновленный скрипт и дайте знать, если ошибка всё ещё возникает или если есть другие вопросы!
Переделал скрипт, эта запись отрабатывает (MsgBox "Файл не найден: " & zipFile, vbExclamation, "Ошибка") и у меня появляется сообщение что путь до файла не найден. Вставляю полный путь, который указан до файла.zip в zipfile и он по нему переходит, значит путь верен, но ошибка все равно появляется.
 
Назад
Сверху Снизу