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>.zipso if you dragC:\User\User\Desktop\New Folderinto the script, it will createC:\User\User\Desktop\New Folder.zipDrag 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.zipand it contains a folder namedZipMe, once you drag and drop it into the script, it will extract the folderZipMetoC:\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



