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

Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 10 » Интерфейс - Заменить каждую крайнюю папку в дереве имеющую файлы архивом.

Ответить
Настройки темы
Интерфейс - Заменить каждую крайнюю папку в дереве имеющую файлы архивом.

Старожил


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

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


Изменения
Автор: adgeuk
Дата: 02-08-2021
Пытаюсь создать архивы только для самых глубоко лежащих папок в дереве, и сохранить их там же.

Сначала, через поиск в Total Commander нахожу все конечные папки у которых нет подпапок.
Затем, выделяю все результаты поиска и создаю архив с галочкой "каждый файл в отдельный архив" чтобы каждая папка архивировалась отдельно.
По идее, каждая выделенная в результатах папка должна быть заархивирована в том же месте где и лежит.
Однако, все архивы кидаются в кучу, в одно место.

Пробовал и через результаты поиска в Total Commander и через результаты поиска в эксплорере, то же самое.
Как бы это провернуть?

Отправлено: 21:50, 31-07-2021

 

Старожил


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

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


Цитата Iska:
Э… Не надо. »
Понял, удалить можно и после.

Цитата Iska:
Покажите здесь эти пути. »
Ошибка "Путь не существует или является недоступным путём в файловой системе" для пути
"E:\Пикачу Работа\Пикачу Работа\FOTKI\Latvia\Depils\2009\Зебра. Ищейка\Iwejka.Zebra [3.5.09"

Отправлено: 16:05, 02-08-2021 | #11



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

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


Ветеран


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

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


adgeuk, там именно одна скобка? Для какой именно строки кода (приведите её) возникает ошибка?

Отправлено: 16:45, 02-08-2021 | #12


Старожил


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

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


Цитата Iska:
там именно одна скобка? Для какой именно строки кода (приведите её) возникает ошибка? »
Да, скобка одна.

Ошибка
Compress-Archive : Путь "E:\Пикачу Работа\Пикачу Работа\FOTKI\Latvia\Depils\2009\3e6pa. Ищейка\Iwejka.Zebra[3.5.09" не существует или является недопустимым путем в файловой системе.
строка:10 знак:9
+ Compress-Archive -Path "$($oDirectoryInfo.FullName)\*.*" -Des ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (E:\Пикачу Работа\...ka.Zebra[3.5.09:String) [Compress-Archive], InvalidOperationException
+ FullyQualifiedErrorId : ArchiveCmdletPathNotFound,Compress-Archive

Отправлено: 17:05, 02-08-2021 | #13


Ветеран


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

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


Угу, ясно. Вот за это я не люблю языки с терминаторными строками, не знаешь заранее, где и из-за чего «рванёт».

Цитата Iska:
Цитата adgeuk:
Сейчас пытаюсь разобраться в коде, чтобы сохранять архивы не в той же папке где лежат архивируемые фотографии, а на одну папку выше, то есть рядом с папкой источником. »
Попробуем. »
Попробовал. Для корректной работы с таким условием архив надо будет создавать на «спуске» рекурсии, а не на «подъёме» из неё.

Цитата adgeuk:
2. "Невозможно преобразовать указанное значение DateTimeOffset в отметку времени ZIP-файла" »
Судя по всему, проблема связана с .Net API — ZipArchiveEntry.LastWriteTime Property (System.IO.Compression) | Microsoft Docs:
Цитата:
Exceptions

ArgumentOutOfRangeException

An attempt was made to set this property to a value that is either earlier than 1980 January 1 0:00:00 (midnight) or later than 2107 December 31 23:59:58 (one second before midnight).

Remarks

When you create a new entry from an existing file by calling the CreateEntryFromFile method, the LastWriteTime property for the entry is automatically set to the last time the file was modified. When you create a new entry programmatically by calling the CreateEntry method, the LastWriteTime property for the entry is automatically set to the time of execution. If you modify the entry, you must explicitly set the LastWriteTime property if you want the value to reflect the time of the latest change.

When you set this property, the DateTimeOffset value is converted to a timestamp format that is specific to zip archives. This format supports a resolution of two seconds. The earliest permitted value is 1980 January 1 0:00:00 (midnight). The latest permitted value is 2107 December 31 23:59:58 (one second before midnight). If the value for the last write time is not valid, the property returns a default value of 1980 January 1 0:00:00 (midnight).
То есть, какие-то из файлов, помещаемых в архив, у Вас имеют дату последней записи ранее этого указанного минимального значения. Лезть в это не хочу.

Пробуйте:
Скрытый текст
Код: Выделить весь код
function ScanSubFolder($oDirectoryInfo) {
    if($oDirectoryInfo.GetFiles().Count -ne 0) {
        "$($oDirectoryInfo.Parent.FullName)\$($oDirectoryInfo.Name).zip"

        $sSourcePath = [WildcardPattern]::Escape($oDirectoryInfo.FullName) + '\*.*'
        $sDestPath   = [WildcardPattern]::Escape("$($oDirectoryInfo.Parent.FullName)\$($oDirectoryInfo.Name).zip")

        Compress-Archive -Path $sSourcePath -DestinationPath $sDestPath -CompressionLevel Optimal
    }

    if($oDirectoryInfo.GetDirectories().Count -ne 0) {
        foreach($oSubDirectoryInfo in $oDirectoryInfo.GetDirectories()) {
            ScanSubFolder $oSubDirectoryInfo
        }
    }
}

$oDirectoryInfo = [System.IO.DirectoryInfo]::new('C:\Мои проекты\0349')
ScanSubFolder $oDirectoryInfo

Последний раз редактировалось Iska, 03-08-2021 в 03:52.


Отправлено: 03:45, 03-08-2021 | #14


Старожил


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

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


Iska, безумно Вам благодарен!
Буду пробовать.

Отправлено: 12:05, 03-08-2021 | #15



Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 10 » Интерфейс - Заменить каждую крайнюю папку в дереве имеющую файлы архивом.

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Темы и Стили - как в проводнике изменить цвет выделения в дереве папок просто Вася Оформление Windows 11/ 10 / 8 / 7 / Vista 3 05-04-2013 12:55
PowerShell - [решено] пакетное изменение разрешений NTFS папок ratibor79 Скриптовые языки администрирования Windows 2 25-11-2012 09:57
CMD/BAT - Копирование только самых новых файлов в папках с сохранением структуры папок hoh Скриптовые языки администрирования Windows 3 03-01-2012 10:22
CMD/BAT - [решено] групповое переименование папок в дереве WChek Скриптовые языки администрирования Windows 2 19-03-2009 11:43
Ошибка - Дублируется папка Мои документы в дереве DarkSpirit84 Microsoft Windows 2000/XP 4 15-02-2008 19:12




 
Переход