¿Puede comprimir un archivo desde el símbolo del sistema utilizando SOLAMENTE la capacidad incorporada de Windows para comprimir archivos?

Pregunta:

Tengo un archivo por lotes que genera un archivo de texto. Pensé que sería bueno si pudiera cerrarlo también.

Esto se usará en un entorno no controlado, por lo que no puedo hacer suposiciones sobre la presencia de productos de software de terceros como 7-Zip , etc. Esto necesita usar la capacidad ahora incorporada de Windows para comprimir archivos.

Respuesta:

Aquí hay una solución de archivos por lotes (una variación de mi otra respuesta) que comprimirá un archivo llamado c:\ue_english.txt y lo pondrá en C:\someArchive.zip :

set FILETOZIP=c:\ue_english.txt

set TEMPDIR=C:\temp738
rmdir %TEMPDIR%
mkdir %TEMPDIR%
xcopy /s %FILETOZIP% %TEMPDIR%

echo Set objArgs = WScript.Arguments > _zipIt.vbs
echo InputFolder = objArgs(0) >> _zipIt.vbs
echo ZipFile = objArgs(1) >> _zipIt.vbs
echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, vbNullChar) >> _zipIt.vbs
echo Set objShell = CreateObject("Shell.Application") >> _zipIt.vbs
echo Set source = objShell.NameSpace(InputFolder).Items >> _zipIt.vbs
echo objShell.NameSpace(ZipFile).CopyHere(source) >> _zipIt.vbs
echo wScript.Sleep 2000 >> _zipIt.vbs

CScript  _zipIt.vbs  %TEMPDIR%  C:\someArchive.zip

pause

Se requiere acceso de escritura al padre de la carpeta almacenada en TEMPDIR . Como este no suele ser el caso de la raíz de la unidad C, TEMPDIR posible que deba cambiarse TEMPDIR .

También se requiere acceso de escritura para la carpeta en la que se encuentra el script .bat (ya que genera un archivo allí).

Además, tenga en cuenta que la extensión del archivo comprimido debe ser .zip . Los intentos de usar otra extensión pueden resultar en un error de secuencia de comandos. En su lugar, genere el archivo .zip y .zip el nombre.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım