Редактирование архива
Можно ли через cmd открыть zip архив (не через винрар,встроенным архиватором в windows) зайти в определенную папку в этом архиве и заменить в этой папке файл
|
Нет, нельзя. «Встроенного архиватора в Windows» не существует. Есть механизм ограниченной поддержки архивов ZIP, интегрированный в Проводник посредством отдельной библиотеки. Используйте командную строку 7-zip, RAR/WinRAR и т.п.
|
Хорошо а нельзя ли с помощь. этой встроенной библиотеки создать архив?
|
Худо-бедно можно посредством клиентов Automation — таких, как WSH/PowerShell, например. Но проще взять 7-Zip.
|
Не подскажите такой скрипт ?
Редактирование архива или создание из имеющихся файлов,все это нужно что бы в одном из файлов изменить дату и время на нынешнее,а сам файл нужен в архиве в конечном итоге
|
Gisender, С помощью PowersHell, Net-Framework должен быть не ниже 4.5-версии, посмотреть из PowerShell можно так:
Код:
(gp "hklm:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client").version
Сам zip:
Код:
add-type -assembly system.io.compression.filesystem
# Создаем папку для распаковки
new-item -t dir "D:\ZIP"
# Распаковываем
[io.compression.zipfile]::extracttodirectory("C:\Folder\test.zip","D:\ZIP")
# Редактируем файл в D:\ZIP
# Запаковываем
[io.compression.zipfile]::createfromdirectory("D:\ZIP","D:\test.zip")
# Перезаписываем исходный test.zip
move "D:\test.zip" "C:\Folder" -force
# Удаляем D:\ZIP
remove-item "D:\ZIP" -recurse -force
|
Цитата:
Цитата Foreigner
С помощью PowersHell, Net-Framework должен быть не ниже 4.5-версии, посмотреть из PowerShell можно так: »
|
А вариантов без установки Net-Framework не найдется?
|
Цитата:
Цитата Gisender
А вариантов без установки Net-Framework не найдется? »
|
Gisender, см. п. #6.
|
iccup.platoon@vk |
26-01-2015 20:42 2461796 |
Если прямо-таки всё у вас "определенное", то можете описать всё более подробно?
1) Название zip-файла
2) Путь к папке в zip-файле
3) Путь к тому самому файлу, который нужно заменить
4) Путь к файлу, которым будем заменять
И тогда я смогу Вам помочь.
|
Цитата:
Цитата iccup.platoon@vk
Если прямо-таки всё у вас "определенное", то можете описать всё более подробно?
1) Название zip-файла
2) Путь к папке в zip-файле
3) Путь к тому самому файлу, который нужно заменить
4) Путь к файлу, которым будем заменять
И тогда я смогу Вам помочь. »
|
1) jetpack.zip
2) Путь: в главной директории архива лежит папка с названием resources в ней лежит папка с названием firefox,а в ней лежит папка с названием data и уже в этой папке лежит файл с названием data.js который нужно заменить
3)Файл котором будем заменять это такой же data.js по пути %appdata%/data.js
|
iccup.platoon@vk |
28-01-2015 14:19 2462635 |
Код:
Set ShellApp = CreateObject("Shell.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const OverwriteExisting = True
Set objDestFolder = ShellApp.NameSpace("F:\SANDBOX\work") ' куда распаковать
Set objSrcFolder = ShellApp.NameSpace("F:\SANDBOX\jetpack.zip") ' что распаковать
objDestFolder.CopyHere objSrcFolder.Items ' распаковка архива
sSourceFolder = "F:\SANDBOX\work" ' путь, где лежит ТОЛЬКО одна лишь распакованная папка
sTargetZIPFile = "F:\SANDBOX\jetpack.zip" ' имя будущего архива
sFile = "F:\SANDBOX\data.js" ' файлик, которым будем заменять
sPath = "F:\SANDBOX\work\resources\firefox\data\" ' Путь для копирования файлика
objFSO.DeleteFile("F:\SANDBOX\work\resources\firefox\data\data.js") ' Удаляем старый
objFSO.CopyFile sFile , sPath, OverwriteExisting ' Копируем новый
' Здесь упаковывается новый архив, работает на магии '
Dim oShellApp, oFSO, iErr, sErrSource, sErrDescription
Set oShellApp = CreateObject("Shell.Application")
Set oFSO = CreateObject("Scripting.FileSystemObject")
If Right(sSourceFolder,1) <> "\" Then sSourceFolder = sSourceFolder & "\"
On Error Resume Next
If oFSO.FileExists(sTargetZIPFile) Then oFSO.DeleteFile sTargetZIPFile,True
iErr = Err.Number
On Error Resume Next
oFSO.OpenTextFile(sTargetZIPFile, 2, True).Write "PK" & Chr(5) & Chr(6) & String(18, Chr(0))
iErr = Err.Number
On Error Resume Next
oShellApp.NameSpace(sTargetZIPFile).CopyHere oShellApp.NameSpace(sSourceFolder).Items
iErr = Err.Number
Do Until oShellApp.NameSpace(sTargetZIPFile).Items.Count = oShellApp.NameSpace(sSourceFolder).Items.Count
WScript.Sleep 500
Loop
' Конец магической упаковки '
Мне самому страшно =) Редактируете под себя и сохраняете этот код в файл SkriptName.vbs
Iska, не бей за такой код =)
|
Время: 22:20.
© OSzone.net 2001-