У меня есть огромное количество файлов (> 30K), которые все хранятся в одном каталоге и нуждаются в реорганизации и архивировании.Пакет или Powershell: Архивные файлы с похожими именами
Файлы именуются как (не хронологического порядка):
- M056811-01-.txt
- M056811-02-.txt
- M056811-03-.txt
- M956782 -01-.txt
- M956782-02-.txt ...
Я хочу архивировать файлы, которые принадлежат друг другу (имеют один и тот же префикс) в один zip-файл. Что бы привести к своего рода:
- M056811.zip
- M956782.zip ...
Есть ли способ для того чтобы достигнуть этого с некоторыми Batch или Powershell сценариев.
Я не очень продвинутый в сценариях. За исключением самого ответа (если есть решение), мне очень хотелось бы знать, что это работает.
Мое окончательное решение (большое спасибо David Брабанта):
Я редактировал сценарий для удаленного использования реж. Нет необходимости помещать скрипт в тот же каталог. Просто отредактируйте первые две переменные, и вам должно быть хорошо идти.
$dirpath = "<Enter Directorypath here>"
$offsetlength = 6
$pathlength = $dirpath.Length
$absolutelength = $pathlength + $offsetlength
dir $dirpath | group { $_.FullName.Substring(0, $absolutelength) } | %{
$subset = $_
$subset.Group | %{
Compress-Archive $_ $subset.Name -Update
}
}
SO не является бесплатным кодовым письмом! Попробуйте сами, и когда вы застряли, вернитесь сюда, опишите точно, чего вы хотите достичь и что делает ваш код на самом деле. – aschipfl