Вам не нужно быть опытным автором сценариев, чтобы использовать PowerShell, и вам не нужно использовать явный сценарий PowerShell (или его интерфейс IDE) для использования команд PowerShell - вы можете использовать команды PowerShell и сделать их частью логики пакетного сценария. выполнить и использовать.
Я думаю, что вы ищете собственный способ Windows для выполнения задачи, и вы просто хотите убедиться, что он действительно является родным для Windows и будет работать с Windows 7 и выше (новее).
Сжатие и архивирование
Ниже я создал пакетный скрипт, который работает с Windows 10 и Windows 7 и использует логику, которая работает на старых версиях PowerShell, а также на более новых версиях на тот случай, если я использовал более старую логику.
Перетаскивание
Просто перетащите папку, которую вы хотите сжать, в пакетный скрипт, и она будет заархивирована в виде zip-файла, и она создаст новый zip-файл в том же месте, но с <foldername you archive>.zip
так что если вы перетащите C:\User\User\Desktop\New Folder
в сценарии, он создаст C:\User\User\Desktop\New Folder.zip
Перетащите папку в скрипт
Создано впоследствии
Сценарий
Примечание. Я оставил две переменные в сценарии закомментированными сверху, чтобы вы могли использовать их и явно указывать исходную папку и имя файла назначения, а не использовать метод перетаскивания.
Исходная ссылка на идею логики 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
Распаковка и извлечение
Я также создал пакетный скрипт ниже, который работает с Windows 10 и Windows 7 и использует логику, которая работает на старых версиях PowerShell, а также на более новых версиях на случай, если я использовал более старую логику.
Перетаскивание
Просто перетащите zip-файл, который хотите распаковать, в сценарий, и он извлечет содержимое файла в ту же папку, где находится zip-файл, который вы перетащили в сценарий. Поэтому, если у вас есть C:\User\User\Desktop\ZipMe.zip
и в нем есть папка с именем ZipMe
, после того, как вы перетащите ее в сценарий, она извлечет папку ZipMe
в C:\User\User\Desktop
.
Перетащите файл zip в скрипт
Извлечено впоследствии
Сценарий
Важное замечание: Переменная в приведенном выше сценарии сжатия и архивирования (первый сценарий вверху), отображаемый как $includebasedir = $true
указывает на сжатие фактической папки и содержимого внутри. Если вместо этого значения установлено значение $false
или вы извлекаете из zip-файла, не содержащего папку, приведенный ниже сценарий извлечет все файлы и другое содержимое в ту же папку, в которой находится zip-файл, поэтому будет создано 100 файлов и папок. извлеченный, если это - то, что содержало файл почтового индекса без родительской папки в пределах файла.
Примечание. Я оставил две переменные в сценарии закомментированными сверху, чтобы вы могли использовать их и явно указать папку назначения и имя файла zip, а не использовать метод перетаскивания.
@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
Дополнительные ресурсы