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

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

Переводчик Google

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

### Возможные причины и решения:

1. Пробелы и специальные символы в пути:
Убедитесь, что в пути к файлу нет лишних пробелов или специальных символов, которые могут вызывать проблемы. Например, если у вас есть пробелы в имени пользователя или в папках, убедитесь, что вы правильно указали путь.

Пример:
Код:
vbscript
   zipFile = "C:\Users\Ваше Имя\Downloads\file.zip" ' Убедитесь, что путь указан без ошибок

2. Права доступа:
Убедитесь, что у вас есть права доступа к указанному файлу. Попробуйте открыть файл вручную через проводник, чтобы убедиться, что он доступен.

3. Расширение файла:
Проверьте, что файл действительно имеет расширение .zip. Иногда файлы могут быть переименованы с неправильным расширением. Попробуйте изменить расширение файла на .zip, если это необходимо.

4. Проверка существования файла с помощью FileSystemObject:
Попробуйте использовать FileSystemObject для проверки существования файла. Вот пример, как это можно сделать:

Код:
vbscript
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")

   If fso.FileExists(zipFile) Then
       MsgBox "Файл найден!", vbInformation, "Успех"
   Else
       MsgBox "Файл не найден: " & zipFile, vbExclamation, "Ошибка"
   End If

   Set fso = Nothing

5. Тестирование на другом файле:
Попробуйте создать новый zip-файл в другом месте (например, на рабочем столе) и протестировать скрипт на этом файле. Это поможет исключить возможность повреждения текущего zip-файла.

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

### Возможные причины и решения:

1. Пробелы и специальные символы в пути:
Убедитесь, что в пути к файлу нет лишних пробелов или специальных символов, которые могут вызывать проблемы. Например, если у вас есть пробелы в имени пользователя или в папках, убедитесь, что вы правильно указали путь.

Пример:
Код:
vbscript
   zipFile = "C:\Users\Ваше Имя\Downloads\file.zip" ' Убедитесь, что путь указан без ошибок

2. Права доступа:
Убедитесь, что у вас есть права доступа к указанному файлу. Попробуйте открыть файл вручную через проводник, чтобы убедиться, что он доступен.

3. Расширение файла:
Проверьте, что файл действительно имеет расширение .zip. Иногда файлы могут быть переименованы с неправильным расширением. Попробуйте изменить расширение файла на .zip, если это необходимо.

4. Проверка существования файла с помощью FileSystemObject:
Попробуйте использовать FileSystemObject для проверки существования файла. Вот пример, как это можно сделать:

Код:
vbscript
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")

   If fso.FileExists(zipFile) Then
       MsgBox "Файл найден!", vbInformation, "Успех"
   Else
       MsgBox "Файл не найден: " & zipFile, vbExclamation, "Ошибка"
   End If

   Set fso = Nothing

5. Тестирование на другом файле:
Попробуйте создать новый zip-файл в другом месте (например, на рабочем столе) и протестировать скрипт на этом файле. Это поможет исключить возможность повреждения текущего zip-файла.

### Вопрос:
Попробуйте выполнить указанные шаги и сообщите, если проблема сохраняется. Если возможно, предоставьте точный путь к вашему zip-файлу, чтобы я мог помочь вам более детально.
Почему когда я в пути до файл.zip использую %USERNAME% скрипт перестает работать? Пример: C:\Users\%USERNAME%\Downloads\file.zip
 
Почему когда я в пути до файл.zip использую %USERNAME% скрипт перестает работать? Пример: C:\Users\%USERNAME%\Downloads\file.zip
Использование переменной окружения %USERNAME% в путях файлов в скриптах может быть проблематичным, особенно в некоторых языках программирования и сценариях. В большинстве случаев, когда вы используете %USERNAME% в командной строке Windows или в некоторых скриптах, эта переменная должна быть развернута в фактическое имя пользователя. Однако в других контекстах, например, в VBScript, она не будет автоматически интерпретирована.

### Почему это происходит:
1. Необработанные переменные окружения: VBScript не поддерживает автоматическую интерпретацию переменных окружения в строках. Поэтому, если вы используете %USERNAME% в строке пути, VBScript не сможет его распознать и будет воспринимать это как обычный текст.

2. Синтаксис: В VBScript вам нужно использовать специальный метод для получения значения переменной окружения.

### Решение:
Чтобы использовать имя пользователя в пути, вы можете использовать объект WScript.Network для получения имени пользователя. Вот пример:

Код:
Dim objNetwork, zipFile
Set objNetwork = CreateObject("WScript.Network")
username = objNetwork.UserName

zipFile = "C:\Users\" & username & "\Downloads\file.zip"

' Теперь вы можете использовать zipFile в вашем скрипте
MsgBox "Путь к файлу: " & zipFile

### Объяснение:
  • Мы создаем объект WScript.Network и используем его свойство UserName, чтобы получить текущее имя пользователя.
  • Затем мы формируем полный путь к файлу, используя это имя.

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

Вот пример скрипта:

Код:
Option Explicit

Dim objShell, zipFile, outputFolder

' Указываем путь к zip-файлу с использованием переменной %USERNAME%
zipFile = "C:\Users\" & CreateObject("WScript.Network").UserName & "\path\to\your.zip"
outputFolder = "C:\1"

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

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

' Удаляем zip-файл без запроса
On Error Resume Next ' Игнорируем ошибки, если файл не существует
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFile zipFile, True
On Error GoTo 0 ' Возвращаем обработку ошибок к нормальному состоянию

' Освобождаем объекты
Set objShell = Nothing
Set fso = Nothing

### Объяснение скрипта:

1. Определение переменных:
- zipFile - путь к zip-файлу, который будет распакован. Используется переменная %USERNAME%, чтобы динамически подставить имя текущего пользователя.
- outputFolder - папка, куда будет распакован архив.

2. Создание объекта Shell:
- Используется CreateObject("Shell.Application") для работы с файловой системой и архивами.

3. Проверка существования zip-файла:
- Если файл существует, его содержимое копируется в указанную папку.

4. Удаление zip-файла:
- С помощью FileSystemObject удаляется zip-файл без запроса на подтверждение.

5. Освобождение ресурсов:
- Объекты освобождаются, чтобы избежать утечек памяти.

### Примечания:
  • Убедитесь, что путь к zip-файлу указан правильно, заменив path\to\your.zip на фактический путь к вашему zip-файлу.
  • Если у вас есть дополнительные вопросы или нужна помощь с другими аспектами, не стесняйтесь спрашивать!
 
вместо имени пользователя должна быть переменная %USERNAME%
Код:
zipFile = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%UserProfile%\path\to\your.zip")

Только учтите, что путь к юзеру раскроется тот, от чьего имени вы настроите запуск задания в планировщике.
 
Код:
zipFile = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%UserProfile%\path\to\your.zip")

Только учтите, что путь к юзеру раскроется тот, от чьего имени вы настроите запуск задания в планировщике.
Спасибо, буду иметь ввиду
 
Назад
Сверху Снизу