Как архивировать файлы в Windows, используя только то, что встроено (пакетный скрипт, проводник и т. Д.)? - PullRequest
5 голосов
/ 21 мая 2010

Я пытаюсь написать скрипт, который я могу дать пользователю, чтобы он автоматически архивировал определенные файлы и затем загружал их на FTP-сайт. Кто-нибудь знает, где я могу найти информацию о написании командного файла для автоматической архивации файлов, используя только то, что доступно пользователю, работающему под управлением Windows?

Ответы [ 6 ]

1 голос
/ 21 мая 2010

Можно работать с zip-файлами, используя поддержку сжатых папок (COM) и Windows Scripting Host. Вы начнете с создания объекта Shell.Application . Объект FolderItem имеет такие методы, как CopyHere и т. Д., Которые позволяют вам манипулировать zip-файлом, например папкой. См. на этой странице для примера и распаковки кода кода.

0 голосов
/ 15 января 2014

По csgnrg@yahoo.it

Если вы хотите преобразовать один файл в один zip-файл, вы можете использовать gzip.exe

Let oProcess.Cwd = oOutput.PATH
    oProcess.SetUsePosition
    oProcess.SetUseSize 0, 0
    oProcess.ExeCmd "gzip.exe gzip -f -q -c -9 " & oSource.Source & " > " & oOutput.Source, True
    If oProcess.Error Then
       Let ErrorMsg = oProcess.ErrorMsg
       Exit Sub
    End If
0 голосов
/ 06 июля 2013

Windows имеет свою собственную команду zip. Вы можете поместить приведенный ниже код в файл backup.bat и запустить его.

@echo off
:: variables
set drive=E:\backup
set backupcmd=xcopy /s /c /d /e /h /i /r /y

echo ### Backing up My Documents...
%backupcmd% "e:\Repositories" "%drive%\SVNrepository\Repositories"



e:
cd "%drive%\SVNrepository"

zip -r -S -T -$ -m Repositories.zip Repositories


set filename="..\Repository_bak_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%.zip"
move .\*.zip %filename%
cd E:\backup\

echo Backup Complete!
rem @pause
0 голосов
/ 21 мая 2010

Несколько форумов (я не могу найти официальный ответ Microsoft) предполагают, что встроенная в Windows функция zip предоставляется dll, для которой нет аргумента командной строки. Например:

Распаковка является функцией zipfldr.dll, поэтому будет использовать regsvr32.exe чтобы вызвать его, и, насколько я знаю, нет аргументов, которые можно добавить к для распаковки через командный файл.

- от technologyquestions.com

Я бы порекомендовал стороннюю программу, которых много (которую можно предоставить вместе со скриптом): 7zip , winzip , pkzip и т. д.

Также вы можете рассмотреть VBScript или WSH в качестве альтернативы пакетным файлам.

0 голосов
/ 21 мая 2010

Поскольку (AFAIK) Windows не поставляется с программой, которая может архивировать файлы из командной строки. В этом отношении он также не поставляется со скриптовой ftp-программой (команда ftp есть, но она интерактивная).

Лучше всего написать программу на некотором скомпилированном языке с доступом к библиотекам для архивирования файлов и ftp.

0 голосов
/ 21 мая 2010

Лучшей альтернативой пакетному файлу будет использование JAR и использование пакета Java java.util.zip для архивирования файлов. Или как насчет распространения файла bat с помощью JAR. Люди могут выполнить файл BAT, а он, в свою очередь, может запустить JAR.

...