Как анализировать / передавать строки из текстового файла в программу для запуска с использованием этой строки - PullRequest
0 голосов
/ 11 июля 2020

Я использую старую программу, которая вышла из бизнеса, она создает папку, а внутри этой папки «root» он создает другие папки внутри этой папки, он создает rar-файл вывода из запущенной программы.

Root

Folder

   zipfile


Folder

   zipfile

Обратите внимание, что внутри Root находится более 400 папок, и в каждой из них есть zip-файл, который мне нужно распаковать.

Папка зависит от времени ее запуска, и эта программа запускается от 2 раз в минуту до 6 раз в минуту, поэтому она создает новую папку в папке «root» в зависимости от времени запуска.

Чтобы увидеть информацию, мне нужно разархивировать файл, созданный в этой папке. Проблема, у меня более 400 папок внутри центральной папки, в которой все файлы должны быть перенесены в папку, в которой они сейчас находятся.

Я знаю, что WinRar имеет здесь функцию unrar, и я сгенерировал текст файл, содержащий список каталогов каждой папки, которую мне нужно распаковать. По одной папке на строку.

Обычно мне нужен командный файл, который будет go для каждой папки, выполнить здесь unrar и перейти к следующей папке.

Доступна ли помощь? Я использую домашнюю систему Win10 и мою зарегистрированную версию WinRAR 5.80. Я не являюсь пользователем Powershell, я изучаю его с сегодняшнего дня, но я использовал PowerShell для создания txt-файла со списком каталогов.

(Get-ChildItem -Recurse -Filter " zip"). FullName | Out-File d: \ pattern.txt

Так что я не совсем ничего не понимаю.

Спасибо.

В ответ на Campo я использую WinRar для обработки Zip-архивов, а также Rars, я не обнаружил, что мне нужен распаковщик zip, когда у меня установлен WinRar.

1 Ответ

0 голосов
/ 12 июля 2020

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

Как вы сказал, что вы используете PowerShell в Windows 10, я ожидаю, что у вас есть PowerShell v5.0 +. Таким образом, это одна строка для сценария PowerShell или для ввода непосредственно в подсказку PowerShell, которая должна распаковывать каждый из ваших файлов .zip напрямую, без использования сторонней утилиты, такой как WinRAR.

Измените строку -Path в соответствии с вашим местоположением c.

Get-ChildItem -Path "C:\Users\Frank\Root" -Filter "*.zip" -File -Recurse | ForEach-Object { Expand-Archive -Path $_.FullName -DestinationPath $_.DirectoryName -Force }

Вы не уточнили, хотите ли вы удалить zip-файл после его разархивирования, поэтому, если если вам нужна эта функциональность, для целей этого упражнения вы можете просто добавить команду удаления:

Get-ChildItem -Path "C:\Users\Frank\Root" -Filter "*.zip" -File -Recurse | ForEach-Object { Expand-Archive -Path $_.FullName -DestinationPath $_.DirectoryName -Force; Remove-Item $_.FullName }

Обратите внимание, что этот пример является для вас только отправной точкой. Когда вы узнаете больше, вы можете добавить к нему надежность, чтобы предотвратить, например, удаление zip-файла, если его извлечение не удалось, и, возможно, что делать в случае ошибок и т. Д. c.

...