Você não precisa ser um especialista em scripts para utilizar o PowerShell e não precisa utilizar um script PowerShell explícito (ou sua interface IDE) para usar Comandos PowerShell - você pode utilizar comandos PowerShell e torná-los parte da lógica do script em lote para executar e usar.
Acho que você está procurando uma maneira nativa do Windows para concluir a tarefa e deseja apenas garantir que ela seja realmente nativa do Windows e funcione de < strong> Windows 7 e acima (mais recente).
Compactando e arquivando
Eu criei um script em lote abaixo que funciona no Windows 10 e Windows 7 e usa uma lógica que funciona em versões mais antigas do PowerShell bem como versões mais recentes apenas no caso de eu usar lógica mais antiga.
Drag and Drop
Just drag the folder you wish to compress to the batch script and it'll be archived as a zip file and it will create the new zip file in that same location but with the
<foldername you archive>.zip
so if you dragC:\User\User\Desktop\New Folder
into the script, it will createC:\User\User\Desktop\New Folder.zip
Drag folder to script
Created afterwards
O script
Observação: deixei duas variáveis no script comentadas no início para que você possa usá-las e definir explicitamente a pasta de origem e o nome do arquivo de destino desejo em vez de usar o método de arrastar e soltar.
Link de origem para a ideia lógica do PowerShell
@ECHO ON
::SET src_folder=C:\Users\User\Desktop\Test
::SET destfile=C:\Users\User\Desktop\Test.zip
SET src_folder=%~1
SET destfile=%~FN1.zip
:DynamicPSScriptBuild
SET PSScript=%temp%\%~n0.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO [Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem")>>"%PSScript%"
ECHO $compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal >>"%PSScript%"
ECHO $includebasedir = $true >>"%PSScript%"
ECHO [System.IO.Compression.ZipFile]::CreateFromDirectory("%src_folder%", "%destfile%", $compressionLevel, $includebasedir)>>"%PSScript%"
:PowerShell
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"
EXIT
Descompactando e Extraindo
Eu também criei um script em lote abaixo que funciona no Windows 10 e Windows 7 e usa lógica que funciona em versões mais antigas do PowerShell, além de versões mais recentes no caso eu usei lógica mais antiga.
Drag and Drop
Just drag the zip file want to decompress into the script and it will extract the contents of the file to the same folder as the zip file you dragged into the script resides. So if you have
C:\User\User\Desktop\ZipMe.zip
and it contains a folder namedZipMe
, once you drag and drop it into the script, it will extract the folderZipMe
toC:\User\User\Desktop
.Drag the zip file to the script
Extracted afterwards
O script
Importante: a variável no compactação e arquivamento do script acima (o primeiro script no topo) mostrado como $includebasedir = $true
diz para zipar a pasta atual e o conteúdo dentro dela. Se esse valor foi definido como $false
ou se você extrair de um zip que não contém a pasta, o script abaixo extrairá todos os arquivos e outros conteúdos para a mesma pasta em que reside o arquivo zip - assim, 100 arquivos e pastas ser extraído se o arquivo zip não contiver nenhuma pasta pai contida no arquivo.
Observação: deixei duas variáveis no script comentadas no início para que você possa usá-las e definir explicitamente a pasta de destino e o nome do arquivo zip desejo em vez de usar o método de arrastar e soltar.
@ECHO ON
::SET dest_folder=C:\Users\User\Desktop\New folder
::SET zip_file=C:\Users\User\Desktop\Test\test.zip
SET dest_folder=%~DP1
SET zip_file=%~1
:DynamicPSScriptBuild
SET PSScript=%temp%\%~n0.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO [Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.Filesystem")>>"%PSScript%"
ECHO [io.compression.zipfile]::ExtractToDirectory("%zip_file%", "%dest_folder%") >>"%PSScript%"
:PowerShell
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"
GOTO :EOF