Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Редактировать файлы прямо в архиве по маске

Ответить
Настройки темы
PowerShell - Редактировать файлы прямо в архиве по маске

Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: ryok
Дата: 11-11-2021
Приветствую, был составлен такой код на основе примеров которые нашел в сети.

PHP код: Выделить весь код

$xpuiBundlePath "C:\Users\Ps1\Desktop\123\xpui.spa"


Add-Type -Assembly 'System.IO.Compression.FileSystem'

$zip = [System.IO.Compression.ZipFile]::Open($xpuiBundlePath'update')
$entry $zip.GetEntry('xpui.js')


# Extract xpui.js from zip to memory
$reader = New-Object System.IO.StreamReader($entry.Open())
$xpuiContents $reader.ReadToEnd()
$reader.Close()


# Replace ".ads.leaderboard.isEnabled" + separator - '}' or ')'
# With ".ads.leaderboard.isEnabled&&false" + separator
$xpuiContents $xpuiContents -replace '(\.ads\.leaderboard\.isEnabled)(}|\))''$1&&false$2'
    
# Delete ".createElement(XX,{onClick:X,className:XX.X.UpgradeButton}),X()"
$xpuiContents $xpuiContents -replace '\.createElement\([^.,{]+,{onClick:[^.,]+,className:[^.]+\.[^.]+\.UpgradeButton}\),[^.(]+\(\)'''


# Rewrite it to the zip
$writer = New-Object System.IO.StreamWriter($entry.Open())
$writer.BaseStream.SetLength(0)
$writer.Write($xpuiContents)
$writer.Close()
        
$zip.Dispose() 


Вкратце происходит следующее:
- Открываем архив xpui.spa
- в памяти редактируем файл xpui.js из этого архива.
- измененный файл xpui.js закидываем обратно в тот же архив, заменяя старый вариант файла.

Загвоздка для меня в следующем, в этом архиве есть еще файлы, которые хочеться обрабатывать так же в памяти как показано в примере выше, только не по одному а сразу скопом, например хочу обработать по маске все файлы в архиве *.css, но не могу эту маску правильно описать в коде, получаеться только по одному файлу.

Отправлено: 14:08, 10-11-2021

 

Deadooshka


Сообщения: 2566
Благодарности: 698

Профиль | Отправить PM | Цитировать


итерация по свойству Entries или в пайп фильтру какому-нибудь
Код: Выделить весь код
$zip.Entries | where FullName -like '*.txt' | foreach {
    $reader = New-Object System.IO.StreamReader($_.Open())
    ...
    $writer.Close()
}

Последний раз редактировалось Sham, 10-11-2021 в 17:45.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:49, 10-11-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Не проще распаковать архив, обработать что нужно, а потом запаковать обратно?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:50, 10-11-2021 | #3


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


Sham, Как же это было просто, благодарю.

DJ Mogarych, Мне проще обновить это в архиве, чем их распаковывать и удалять, так же скрипт этот часто используется, а по ресурсам я так понимаю этот вариант немного экономичнее.

Отправлено: 20:39, 10-11-2021 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Редактировать файлы прямо в архиве по маске

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Извлечь файлы из архива cab angel_lyucifer Скриптовые языки администрирования Windows 3 27-12-2013 20:59
CMD/BAT - нужно извлечь из архива определенные файлы за текущую дату alek2012 Скриптовые языки администрирования Windows 0 20-06-2012 15:24
Разное - достать файлы vidak Программирование и базы данных 3 17-11-2011 11:02
Файлы из UseNet архива от Google. Как? testsoft2001 Хочу все знать 4 18-04-2003 12:15
Как достать переписанные файлы с CD-R RW Rom K Хочу все знать 2 04-12-2002 23:41




 
Переход