1 votos

Comando de compresión incorporado de Windows sin utilizar ninguna herramienta externa

<p>Quiero una compresión de línea de comandos de Windows (a partir 7) y archivo/secuencia de comandos, que no requiere ninguna herramientas externas o utilidades, PowerShell, como no soy mucho de scripter de Windows. Debe ser totalmente independiente, como comandos de zip/tar de Unix/Linux.</p> <p>He buscado mucho para este tipo de script o un comando, pero no he encontrado ninguno aún. ¿Alguien ha encontrado algo como esto?</p>

1voto

frooyo Puntos 658

Al menos en Windows 7 (y XP... no estoy tan seguro acerca del estado con Windows 10 todavía) no tiene una interfaz de línea de comandos para trabajar con la compresión ZIP de apoyo proporcionado por "Microsoft Carpetas Comprimidas" de apoyo (como lo Explorer puede utilizar).

Sin embargo, usted puede hacer esto mediante la creación de un archivo de secuencia de comandos y, a continuación, el uso de Windows Script Host, que está integrado en Windows XP y versiones posteriores (como es el "Microsoft Carpetas Comprimidas" apoyo).

Por ejemplo, Peter Mortensen de la respuesta de la muestra el contenido de un archivo por lotes que se pueden hacer, que escribe 8 líneas de VBScript que, a continuación, utilizar el "Microsoft Carpetas Comprimidas" de apoyo.

Tenga en cuenta que el "sueño de 2000" al final sólo hace una pausa de 2 segundos, y no está tan seguro de que un enfoque como George Yockey del enfoque (comprobación de activos comprimir) o de la comprobación .Count (algo así como kayleeFrye_onDeck de la presentación).

No estoy seguro de si un WSH-respuesta basado en viola las metas que se pretende cuando usted dijo que no quería PowerShell, pero que en realidad no uso de PowerShell.

0voto

PJ Mahoney Puntos 889

Usted no necesita ser un experto guionista utilizar PowerShell y no es necesario utilizar un explícito PowerShell script (o su interfaz IDE) para el uso de PowerShell comandos que puede utilizar PowerShell comandos y las hacen parte de la secuencia de comandos por lotes lógica a ejecutar y utilizar.

Creo que usted está buscando un Windows nativo manera para completar la tarea, y usted sólo quiere asegurarse de que es, de hecho, nativo de Windows y de Windows 7 y anteriores (la más reciente).


Compresión y Archivado

He creado un script por lotes a continuación que funciona a partir de Windows 10 y Windows 7 y utiliza la lógica que funciona en las versiones más antiguas de PowerShell así como las nuevas versiones sólo en caso usé mayores lógica.

Arrastrar y Soltar

Sólo tienes que arrastrar la carpeta que desea comprimir el archivo de comandos por lotes y va a ser archivado como un archivo zip y se creará el nuevo archivo zip en en ese mismo lugar, pero con el <foldername you archive>.zip así que si arrastra C:\User\User\Desktop\New Folder en la secuencia de comandos, se va a crear C:\User\User\Desktop\New Folder.zip

Arrastre la carpeta a la secuencia de comandos

enter image description here

Creado después

enter image description here

La Secuencia De Comandos

Nota: he dejado dos variables en el script de comentarios en la parte de arriba así que usted puede utilizar esos y establecer la carpeta de origen y el nombre de archivo de destino explícitamente si usted desea en lugar de utilizar el método de arrastrar y soltar.

El enlace de la fuente para el PowerShell lógica de la idea

@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

Descomprimir y Extraer

También he creado un script por lotes a continuación que funciona a partir de Windows 10 y Windows 7 y utiliza la lógica que funciona en las versiones más antiguas de PowerShell así como las nuevas versiones sólo en caso usé mayores lógica.

Arrastrar y Soltar

Sólo tienes que arrastrar el archivo zip que desea descomprimir en la secuencia de comandos y se extraer el contenido del archivo a la misma carpeta que el archivo zip se arrastró en la secuencia de comandos reside. Así que si usted tiene C:\User\User\Desktop\ZipMe.zip y contiene una carpeta con el nombre ZipMe, una vez que arrastrar y soltar en la secuencia de comandos, se va a extraer la carpeta ZipMe a C:\User\User\Desktop.

Arrastre el archivo zip a la secuencia de comandos

enter image description here

Extraído después

enter image description here

La Secuencia De Comandos

Importante: La variable en la Compresión y archivo de secuencia de comandos de arriba (la primera secuencia de comandos en la parte de arriba) se muestra como $includebasedir = $true indica zip de la carpeta y el contenido dentro. Si este valor se establece en $false lugar o si extrae de un zip que no contiene la carpeta, la siguiente secuencia de comandos de extraer todos los archivos y otros contenidos en la misma carpeta el archivo zip reside-por lo que el 100 archivos y carpetas que se extrae si eso es lo que el archivo zip que contiene no contiene la carpeta principal en el archivo.

Nota: he dejado dos variables en el script de comentarios en la parte de arriba así que usted puede utilizar esos y establecer la carpeta de destino y el zip de nombre de archivo explícitamente si usted desea en lugar de utilizar el método de arrastrar y 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

Más Recursos

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: