Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
-
v79italya
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Приветствую. как можно JS-скриптом или Batом открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения?
на скринах показаны шаги. архив открывается двумя шагами. сначала ПКМ -> 7-Zip -> Открыть архив. затем ПКМ -> Просмотр. нажав Просмотр, жду около минуты(это, наверное, надо учесть, поставив как то паузу) открытие файла. когда файл откроется, нажимаю Правка -> Найти.. ищу . все вместе 3 . только вместо тройки может быть любое число одно-трехзначное. и вот вместо 3(или другого числа) надо поставить 27. причем, когда набираю 27, то опять нужно около минуты ждать(опять надо учесть). потом закрываю файл с сохранением изменений и обновлением файла в архиве. возможно ли это все делать на автомате?
адрес файла и имя файла, наверное, лучше в скрипте указать. сейчас так: C:\red\xyz.iwprj2
сейчас в файле текст укорочен. поэтому будет быстро сохраняться изменения. на самом деле надо около минуты-полторы.
на скринах показаны шаги. архив открывается двумя шагами. сначала ПКМ -> 7-Zip -> Открыть архив. затем ПКМ -> Просмотр. нажав Просмотр, жду около минуты(это, наверное, надо учесть, поставив как то паузу) открытие файла. когда файл откроется, нажимаю Правка -> Найти.. ищу . все вместе 3 . только вместо тройки может быть любое число одно-трехзначное. и вот вместо 3(или другого числа) надо поставить 27. причем, когда набираю 27, то опять нужно около минуты ждать(опять надо учесть). потом закрываю файл с сохранением изменений и обновлением файла в архиве. возможно ли это все делать на автомате?
адрес файла и имя файла, наверное, лучше в скрипте указать. сейчас так: C:\red\xyz.iwprj2
сейчас в файле текст укорочен. поэтому будет быстро сохраняться изменения. на самом деле надо около минуты-полторы.
-
Iska
Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
v79italya, можно, но совсем не так, как Вы себе это представляете.
Исходные данные:Знаем точное местоположение файла архива.Знаем точное местоположение искомого файла в архиве.Знаем, что потребно искать.Знаем, какой архиватор будем пользовать, и предполагаем, что он может быть установлен по стандартному месторасположению.
Процесс:Проверяем существование файла архива.Проверяем существование архиватора.Проверяем существование искомого файла в архиве.Извлекаем искомый файл из архива во временный каталог.Читаем содержимое искомого файла, осуществляем поиск и замену.Если поиск был успешен — сохраняем новое содержимое в искомый файл, помещаем искомый файл в архив с заменой, удаляем временный каталог с файлом.Поместите в gzip-архив весь искомый файл целиком.
Исходные данные:Знаем точное местоположение файла архива.Знаем точное местоположение искомого файла в архиве.Знаем, что потребно искать.Знаем, какой архиватор будем пользовать, и предполагаем, что он может быть установлен по стандартному месторасположению.
Процесс:Проверяем существование файла архива.Проверяем существование архиватора.Проверяем существование искомого файла в архиве.Извлекаем искомый файл из архива во временный каталог.Читаем содержимое искомого файла, осуществляем поиск и замену.Если поиск был успешен — сохраняем новое содержимое в искомый файл, помещаем искомый файл в архив с заменой, удаляем временный каталог с файлом.Поместите в gzip-архив весь искомый файл целиком.
-
Iska
Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Iska, все это второстепенные категории, да и пункты с четвертого по шестой уж больно притянуты за уши в случае с 7zip. Объясню почему. У данного архиватора предусмотрена возможность вывода в поток (ровно как и чтение из потока). Используя sed в качестве потокового редактора, можно запросто редактировать, скажем, текстовые файлы в архиве без извлечения во временную папку. Представьте, есть у нас некоторый текстовый файл some.txt:
Код:
Жмем его, скажем в zip:
Код:
Теперь представим, что в только что пожатом текстовом файле нужно obsolete[/i] заменить на new string. Как мы поступаем:
Код:
Это, конечно, всего лишь схематичный порядок действий, чтобы был ясен сам принцип. Доработать пример напильником можно углубившись в справку 7zip.
Код:
Код: Выделить всё
regular string
obsolete
regular stringЖмем его, скажем в zip:
Код:
Код: Выделить всё
7za a -mx9 test.zip some.txtТеперь представим, что в только что пожатом текстовом файле нужно obsolete[/i] заменить на new string. Как мы поступаем:
Код:
Код: Выделить всё
7za x test.zip -so | sed "s/obsolete/new string/Ig" | 7za u test.zip -si
7za d test.zip some.txt
7za rn test.zip test some.txtЭто, конечно, всего лишь схематичный порядок действий, чтобы был ясен сам принцип. Доработать пример напильником можно углубившись в справку 7zip.
-
Iska
Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Цитата Iska:
1. Знаем
2. Знаем
3. Знаем
4. Знаем
так я уже написал:
1 - C:\red\ или C:\red\xyz.iwprj2
2 - он там один xyz
3 - xyzID>3 , но вместо тройки может быть любое число
4 - C:\Program Files\7-Zip\7z.exe
попробуйте распаковать архив на диск С: . на скринах показано как я делаю это вручную. и хотелось бы также программно.
greg zakharov, а нельзя ли готовое решение?
1. Знаем
2. Знаем
3. Знаем
4. Знаем
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
так я уже написал:
1 - C:\red\ или C:\red\xyz.iwprj2
2 - он там один xyz
3 - xyzID>3 , но вместо тройки может быть любое число
4 - C:\Program Files\7-Zip\7z.exe
попробуйте распаковать архив на диск С: . на скринах показано как я делаю это вручную. и хотелось бы также программно.
greg zakharov, а нельзя ли готовое решение?
-
greg zakharov
Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
greg zakharov, это всё, конечно, интересно, но имеет достаточно ограниченную область применения. Как там с кодировками, BOM, концами строк, а?
Цитата v79italya:
попробуйте распаковать архив на диск С: .
Попробуйте выложить архив с полным содержимым xml-файла xyz.
Цитата v79italya:
на скринах показано как я делаю это вручную. и хотелось бы также программно.
Я уже написал, что «так же» программно не получится. Как — тоже написал. Другой вариант предложил коллега greg zakharov.
Цитата v79italya:
попробуйте распаковать архив на диск С: .
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Попробуйте выложить архив с полным содержимым xml-файла xyz.
Цитата v79italya:
на скринах показано как я делаю это вручную. и хотелось бы также программно.
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Я уже написал, что «так же» программно не получится. Как — тоже написал. Другой вариант предложил коллега greg zakharov.
-
v79italya
Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
greg zakharov, 7zip в поток выводит только потоковые форматы, традиционные .zip, .rar, .7z к ним не относятся. Да и sed я бы не стал советовать - стороннее ПО, да и "вещь в себе" - лучше на PoSh сварганить замену.
Цитата Iska:
Процесс:
Проверяем существование файла архива.
Проверяем существование архиватора.
Проверяем существование искомого файла в архиве.
Таких пунктов можно бесконечное число навертеть.
Если их убрать ничего не изменится - о проблеме ОС/интерпретатор сообщит, а "результат" будет тот же.
Цитата Iska:
Процесс:
Проверяем существование файла архива.
Проверяем существование архиватора.
Проверяем существование искомого файла в архиве.
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Таких пунктов можно бесконечное число навертеть.
Если их убрать ничего не изменится - о проблеме ОС/интерпретатор сообщит, а "результат" будет тот же.
-
Iska
Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Цитата Busla:
7zip в поток выводит только потоковые форматы, традиционные .zip, .rar, .7z к ним не относятся.
Поясните?!
Цитата Busla:
Если их убрать ничего не изменится - о проблеме ОС/интерпретатор сообщит, а "результат" будет тот же.
Можно, конечно, и так. Но лучше заранее обрабатывать такие ситуации.
7zip в поток выводит только потоковые форматы, традиционные .zip, .rar, .7z к ним не относятся.
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Поясните?!
Цитата Busla:
Если их убрать ничего не изменится - о проблеме ОС/интерпретатор сообщит, а "результат" будет тот же.
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Можно, конечно, и так. Но лучше заранее обрабатывать такие ситуации.
-
Busla
Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Цитата Iska:
архив с полным содержимым xml-файла
написал Вам в личку.
а там:
Iska превысил(а) максимальный объем сохраненных персональных сообщений и не может получать новые сообщения, пока не удалит часть старых.
архив с полным содержимым xml-файла
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
написал Вам в личку.
а там:
Iska превысил(а) максимальный объем сохраненных персональных сообщений и не может получать новые сообщения, пока не удалит часть старых.
-
Iska
Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Цитата v79italya:
написал Вам в личку.
Там что-то секретное, что ли, и Вы не хотите сие «светить»? Ну, пришлите на почту.
написал Вам в личку.
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Там что-то секретное, что ли, и Вы не хотите сие «светить»? Ну, пришлите на почту.
-
v79italya
Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Iska, и со второго раза не получилось отправить в личку, а на маил не предусмотрено прикрепление файл.
в принципе то же самое, только текста больше. можно и обойтись
в принципе то же самое, только текста больше. можно и обойтись