Форум программистов, компьютерный форум, киберфорум
Наши страницы
PowerShell
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Dimasik1989
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 205
1

Архивация файлов

01.08.2017, 16:04. Просмотров 1137. Ответов 19
Метки нет (Все метки)

Есть скрипт, который берёт файлы с папки и архивирует в другую папку:

Add-Type -assembly "system.io.compression.filesystem"
$source = "c:\1"
$today = Get-Date -Format d
$destination = "c:\2\$today.zip"
If(Test-path $destination) {Remove-item $destination}
[io.compression.zipfile]::CreateFromDirectory($Source, $destination)

Подскажите как можно сделать архивацию из 2х мест например, т.е. из "c:\1" и "c:\3". Ну и создался один архив в c:\2\...
Какие есть варианты?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2017, 16:04
Ответы с готовыми решениями:

Архивация папок и файлов и отправка их по почте
Добрый день, третий день могу найти скрипт который бы архивировал нужные папки...

Копирование и архивация
Добрый день. Есть скрипт. Но почему то выполняется только первая часть...

Архивация Outlook 2003
Всем привет Имеется вопрос по архивации почты. По идее при архивации почты,...

Архивация Windows 7. Ошибка с автоматическим выбором дисков для архивации
Суть проблемы: делал архивный образ системы Windows 7 - средствами Windows....

Подсчитать количество файлов для каждого из имеющихся расширений файлов
Подсобите) - посчитать все разрешения файлов в текущем каталоге и вывести -...

19
v_svitere
361 / 296 / 98
Регистрация: 03.06.2009
Сообщений: 852
Записей в блоге: 4
01.08.2017, 16:14 2
Dimasik1989,
Добавить новые файлы в существующий zip-архив - ZipArchive.CreateEntry
https://msdn.microsoft.com/ru-ru/library/hh158346%28v=vs.110%29.aspx
0
Dimasik1989
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 205
01.08.2017, 16:37  [ТС] 3
Мне не понятно((( Можете помочь, продемонстрировав на моём скрипте?
0
v_svitere
361 / 296 / 98
Регистрация: 03.06.2009
Сообщений: 852
Записей в блоге: 4
02.08.2017, 12:31 4
Dimasik1989, Ну что же тут непонятного?

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
Add-Type -assembly 'System.IO.Compression'
Add-Type -assembly 'System.IO.Compression.FileSystem'
#СОЗДАЕМ АРХИВ ИЗ ДИРЕКТОРИИ D:\Dump
$Zip="D:\хлам\Dump.zip"
[System.IO.Compression.ZipFile]::CreateFromDirectory("D:\Dump",$Zip)
 
 
#ДОБАВЛЯЕМ В СОЗДАННЫЙ АРХИВ ФАЙЛ
$file="D:\хлам\BASE_REUPDATE.exe"
[System.IO.Compression.ZipArchive]$ZipFile = [System.IO.Compression.ZipFile]::Open($Zip, ([System.IO.Compression.ZipArchiveMode]::Update))
[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($ZipFile, $file, (Split-Path $file -Leaf))
$ZipFile.Dispose()
0
Dimasik1989
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 205
09.08.2017, 10:36  [ТС] 5
v_svitere, огромное Вам спасибо. А вот ещё такой вопросик, можете помочь?

Вот скрипт:

Add-Type -assembly 'System.IO.Compression'
Add-Type -assembly 'System.IO.Compression.FileSystem'
$source = "C:\OstCard"
$today = Get-Date -Format d
$Zip = "C:\1\$today.zip"
[System.IO.Compression.ZipFile]::CreateFromDirectory($source, $Zip)
$file="C:\Program Files\OstCard"
[System.IO.Compression.ZipArchive]$ZipFile = [System.IO.Compression.ZipFile]::Open($Zip, ([System.IO.Compression.ZipArchiveMode]::Update))
[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($ZipFile, $file, (Split-Path $file -Leaf))
$ZipFile.Dispose()


Что нужно изменить, чтобы в созданном архиве были 2 папки с файлами которые в них находятся, т.е. в архиве должны быть 2 папки
1) OstCard - папка находится в C:\
2) Program Files\OstCard - папка находится в С:\Program Files\
0
v_svitere
361 / 296 / 98
Регистрация: 03.06.2009
Сообщений: 852
Записей в блоге: 4
09.08.2017, 11:10 6
Dimasik1989,

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Add-Type -assembly 'System.IO.Compression'
Add-Type -assembly 'System.IO.Compression.FileSystem'
#СОЗДАЕМ АРХИВ ИЗ ДИРЕКТОРИИ C:\OstCard
$Zip="C:\1\$today.zip"
$COMPLEVEL=[System.IO.Compression.CompressionLevel]::Optimal
[System.IO.Compression.ZipFile]::CreateFromDirectory("C:\OstCard",$Zip,$COMPLEVEL,$true)
 
#ДОБАВЛЯЕМ В СОЗДАННЫЙ АРХИВ ФАЙЛЫ НАХОДЯЩИЕСЯ В ДИРЕКТОРИИ C:\Program Files\OstCard
$path="C:\Program Files\OstCard"
$shortPATH=(split-path $path -leaf)
[System.IO.Compression.ZipArchive]$ZipFile = [System.IO.Compression.ZipFile]::Open($Zip, ([System.IO.Compression.ZipArchiveMode]::Update))
foreach($file in (gci $path))
{
    if(!($file.PSIScontainer))
    {[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($ZipFile, $file.fullname, (join-path $shortPATH (Split-Path $file -Leaf)))}
}
 
 
$ZipFile.Dispose()

Но если в директории будут содержаться поддиректории, придется писать рекурсивную функцию.

Данный вариант, добавляет к архиву целевую директорию и все ФАЙЛЫ, находящиеся в ней.
Такие дела.
1
Dimasik1989
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 205
09.08.2017, 13:03  [ТС] 7
Проблема в том, что потом будет неразбериха какие файлы лежали в C:\Program Files\OstCard а какие в C:\OstCard
А можно сделать чтобы при выполнении скрипта в архиве были папка OstCard и папка Program Files и в ней папка OstCard ?

В директории C:\Program Files\OstCard\*.* лежат одни файлы а в директории C:\OstCard\*.* другие

Просто при выполнении скрипта Вашего в архиве одна папка и в ней лежат все файлы из 2-х директорий.

Помогите пожалуйста, если можно.
0
v_svitere
361 / 296 / 98
Регистрация: 03.06.2009
Сообщений: 852
Записей в блоге: 4
09.08.2017, 13:34 8
Лучший ответ Сообщение было отмечено Dimasik1989 как решение

Решение

Dimasik1989,
А можно сделать чтобы при выполнении скрипта в архиве были папка OstCard и папка Program Files и в ней папка OstCard ?
Отчего же нет?
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Add-Type -assembly 'System.IO.Compression'
Add-Type -assembly 'System.IO.Compression.FileSystem'
#СОЗДАЕМ АРХИВ ИЗ ДИРЕКТОРИИ D:\Dump
$Zip="C:\1\$today.zip"
$COMPLEVEL=[System.IO.Compression.CompressionLevel]::Optimal
[System.IO.Compression.ZipFile]::CreateFromDirectory("C:\OstCard",$Zip,$COMPLEVEL,$true)
 
#ДОБАВЛЯЕМ В СОЗДАННЫЙ АРХИВ ФАЙЛЫ НАХОДЯЩИЕСЯ В ДИРЕКТОРИИ
$path="C:\Program Files\OstCard"
$shortPATH=(Split-Path $path -NoQualifier).Substring(1)
[System.IO.Compression.ZipArchive]$ZipFile = [System.IO.Compression.ZipFile]::Open($Zip, ([System.IO.Compression.ZipArchiveMode]::Update))
foreach($file in (gci $path))
{
    if(!($file.PSIScontainer))
    {[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($ZipFile, $file.fullname, (join-path $shortPATH (Split-Path $file -Leaf)))}
}
 
 
$ZipFile.Dispose()
Просто при выполнении скрипта Вашего в архиве одна папка и в ней лежат все файлы из 2-х директорий
Да, это потому что у них одинаковое название
1
Dimasik1989
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 205
09.08.2017, 13:44  [ТС] 9
И ещё один момент, забыл написать, что в этих директориях C:\Program Files\OstCard\*.* и C:\OstCard\*.* помимо файлов лежат ещё и папки с файлами.
0
v_svitere
361 / 296 / 98
Регистрация: 03.06.2009
Сообщений: 852
Записей в блоге: 4
09.08.2017, 14:08 10
Dimasik1989,
И ещё один момент, забыл написать, что в этих директориях C:\Program Files\OstCard\*.* и C:\OstCard\*.* помимо файлов лежат ещё и папки с файлами.
Про это я как раз и говорил...
Но если в директории будут содержаться поддиректории, придется писать рекурсивную функцию.
Но все-таки рекурсивная функция тут не нужна, достаточно переключателя -Recurse у GCI

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Add-Type -assembly 'System.IO.Compression'
Add-Type -assembly 'System.IO.Compression.FileSystem'
#СОЗДАЕМ АРХИВ ИЗ ДИРЕКТОРИИ D:\Dump
$Zip="C:\1\$today.zip"
$COMPLEVEL=[System.IO.Compression.CompressionLevel]::Optimal
[System.IO.Compression.ZipFile]::CreateFromDirectory("C:\OstCard",$Zip,$COMPLEVEL,$true)
 
#ДОБАВЛЯЕМ В СОЗДАННЫЙ АРХИВ ФАЙЛЫ НАХОДЯЩИЕСЯ В ДИРЕКТОРИИ
$path="C:\Program Files\OstCard"
 
[System.IO.Compression.ZipArchive]$ZipFile = [System.IO.Compression.ZipFile]::Open($Zip, ([System.IO.Compression.ZipArchiveMode]::Update))
foreach($file in (gci $path -Recurse -file))
{
        $shortPATH=(split-path(Split-Path $file.fullname -NoQualifier ).Substring(1) -parent) 
        [System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($ZipFile, $file.fullname, (join-path $shortPATH (Split-Path $file -Leaf)))
}
 
 
$ZipFile.Dispose()
1
Dimasik1989
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 205
09.08.2017, 14:17  [ТС] 11
В C:\OstCard создал папку, она попала в архив, и в C:\Program Files\OstCard тоже создал папку, она не попала в архив((
0
v_svitere
361 / 296 / 98
Регистрация: 03.06.2009
Сообщений: 852
Записей в блоге: 4
09.08.2017, 14:25 12
Dimasik1989,
Может быть какие-то ошибки в процессе выполнения были?
Это скрипт у меня отрабатывает на ура со вложенными директориями.

Добавлено через 5 минут
Покажите вывод ХОСТА

PowerShell
1
2
$path="C:\Program Files\OstCard"
(gci $path -Recurse -file)|%{split-path(split-path($_.fullname)  -Parent) -NoQualifier }
0
Dimasik1989
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 205
09.08.2017, 14:30  [ТС] 13
Принтскрин сделал
0
Миниатюры
Архивация файлов  
v_svitere
361 / 296 / 98
Регистрация: 03.06.2009
Сообщений: 852
Записей в блоге: 4
09.08.2017, 14:31 14
Вообще немного затупил я, вот так гораздо проще
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Add-Type -assembly 'System.IO.Compression'
Add-Type -assembly 'System.IO.Compression.FileSystem'
#СОЗДАЕМ АРХИВ ИЗ ДИРЕКТОРИИ D:\Dump
$Zip="C:\1\$today.zip"
$COMPLEVEL=[System.IO.Compression.CompressionLevel]::Optimal
[System.IO.Compression.ZipFile]::CreateFromDirectory("C:\OstCard",$Zip,$COMPLEVEL,$true)
 
#ДОБАВЛЯЕМ В СОЗДАННЫЙ АРХИВ ФАЙЛЫ НАХОДЯЩИЕСЯ В ДИРЕКТОРИИ
$path="C:\Program Files\OstCard"
 
[System.IO.Compression.ZipArchive]$ZipFile = [System.IO.Compression.ZipFile]::Open($Zip, ([System.IO.Compression.ZipArchiveMode]::Update))
foreach($file in (gci $path -Recurse -file))
{
        $shortPATH=(Split-Path $file.fullname -NoQualifier ).Substring(1)
        [System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($ZipFile, $file.fullname,$shortPATH )
}
 
 
$ZipFile.Dispose()
1
Dimasik1989
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 205
09.08.2017, 14:32  [ТС] 15
Вот ещё скрин добавил
0
Миниатюры
Архивация файлов  
Dimasik1989
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 205
09.08.2017, 14:35  [ТС] 16
Проверил, всё равно, без изменений(((
0
v_svitere
361 / 296 / 98
Регистрация: 03.06.2009
Сообщений: 852
Записей в блоге: 4
09.08.2017, 14:39 17
Dimasik1989, А У вас точно директория 785 не пустая?
Сделайте вывод
PowerShell
1
2
$path="C:\Program Files\OstCard"
gci $path -Recurse -file|%{$_.fullname}
И
PowerShell
1
gci $path -Recurse |%{$_.fullname}
0
Dimasik1989
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 205
09.08.2017, 14:46  [ТС] 18
Кстати в папке 785 могут тоже потом лежать файлы

Просто C:\OstCard прокатывает, в ней создаю кучу директорий и файлами, и всё попадает в архив.
0
Миниатюры
Архивация файлов  
v_svitere
361 / 296 / 98
Регистрация: 03.06.2009
Сообщений: 852
Записей в блоге: 4
09.08.2017, 14:49 19
Лучший ответ Сообщение было отмечено Dimasik1989 как решение

Решение

Dimasik1989, Так директория 785 ж у вас пустая. Зачем добавлять в архив пустую директорию?
Вы в нее что-нибудь залейте и будет вам счастье)
1
Dimasik1989
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 205
09.08.2017, 14:53  [ТС] 20
Точно!!!)))) v_svitere, Большущее Вам спасибо, Вы лучший))))
0
09.08.2017, 14:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2017, 14:53

Рекурсивное переименование файлов, md5-хеш которых совпадает с md5-хешем, указанном в списке файлов
Есть файл из двух колонок md5-хеш и имя файла (краткое, с расширением, UTF-8)....

Архивация файлов
Всем привет, сделал архивацию диска (Д), на другой диск. Размер файлов на диске...

Архивация по 50 файлов
Есть одна папка в которой n картинок. Я вбрасываю в нее и жму name.bat...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru