Разархивируйте файл Powershell с расширением .zip и переместите в другую папку. - PullRequest
0 голосов
/ 15 января 2020

Я надеюсь, что некоторые из вас могут мне помочь. Я застрял, изменяя сценарий powershell.

Сценарий проверяет наличие zip-файла (имя файла является фиксированным значением) в указанной папке c (источник) и перемещает его в другую папку (пункт назначения), однако Мне нужен скрипт, который проверяет расширение .zip, а не значение исправления и перемещает его в другую папку. Сейчас я использую этот скрипт:

powershell.exe -nologo -noprofile -command "& { $shell = New-Object -COM Shell.Application; $target = $shell.NameSpace('D:\Anlagen'); $zip = $shell.NameSpace('C:\Temp\Rechnungen\Outlook'); $target.CopyHere($zip.Items(), 16); }"

Как вы видите, мне нужен этот скрипт как batch.file.

Ответы [ 2 ]

1 голос
/ 15 января 2020

Если у вас есть 7-Zip:

set 7zip="C:\Program Files\7-Zip\7z.exe"

IF EXIST "path\to\file.zip" (

    %7zip% x -o"path\to\new\folder" "path\to\file.zip"
)

Следующая строка будет рекурсивно искать в подпапках любой zip-файл. В приведенном ниже примере сценарий начнет рекурсивный поиск со значения root из C :. Путь к файлу будет сохранен как переменная для последующего вызова.

for /f "tokens=*" %%x in ('forfiles /p C:\ /m *.zip /s /c "cmd /c echo @path"') do if exist %%x (

    %7zip% x -o"path\to\new\folder" %%x
)

Другим способом рекурсивного поиска по нескольким буквам дисков является установка букв дисков в качестве переменных в FOR l oop. В следующем примере проверяется, существует ли буква диска, затем ищите zip-файл во всем каталоге. Пример:

for %%i in (c:\, d:\, e:\, f:\, <enter as many as needed>) do if exist %%i (

    for /f "tokens=*" %%x in ('forfiles /p %%i /m *.zip /s /c "cmd /c echo @path"') do if exist %%x (

        %7zip% x -o"path\to\new\folder" %%x
    )
)
1 голос
/ 15 января 2020

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

powershell.exe -c "Expand-Archive -Path 'C:\path\to\archive.zip' -DestinationPath 'C:\unzip\directory'"
xcopy /s /e /t "C:\unzip\directory" "C:\final\destination\directory"

Обратите внимание, что пути UN C также должны работать с любой командой, а не только с локальными путями.

...