2016-05-31 12 views
1

Ich bin ruhig neu in dieser Umgebung, meine Frage ist, dass ich 7z zum Komprimieren von Dateien verwenden, aber könnten Sie mir helfen, wie es mit der Erweiterung .zip tun? Da ich ein Dummy über Batch bin, habe ich nur Umgebungsvariablen erstellt und kann Dateien von einem zum anderen kopieren. Aber eine Datei mit der Zip-Erweiterung zu bekommen, ist schwer für mich. Ich habe es lange Zeit gesichtet. Und ich habe noch eine Frage zu diesem Stapel, ich kann es auf meinem eigenen Computer mit Windows 7 OS laufen, aber ich kann nicht das gleiche mit meinem Kunden Computer, wo ich dieses Skript auf Microsoft SQL Server 2012 ausführen möchte, übrigens die Der Name des Master-Ordners hat Platz und ich bekomme auch Fehler damit.Windows Batch zu Zip-Dateien mit. Zip-Erweiterung

echo off 

if not exist "C:\Pack" mkdir %genericPath%\Pack 
if not exist "C:\ProAgent" mkdir %genericPath%\Pack\ProAgent 
if not exist "C:\ProAgent1230" mkdir %genericPath%\Pack\ProAgent1230 

xcopy /b /v /y /s %genericPath%\Filter-Inventory\filter.ini %genericPath%\Pack\ProAgent 
xcopy /b /v /y /s %genericPath%\Filter-Inventory\pvinvent.ini %genericPath%\Pack\ProAgent 
xcopy /b /v /y /s %genericPath%\Registry\updateProAgent.reg %genericPath%\Pack\ProAgent1230 
xcopy /b /v /y /s %genericPath%\Files\$update$.bat %genericPath%\Pack\ProAgent1230 
xcopy /b /v /y /s %genericPath%\Files\runscript.vbs %genericPath%\Pack\ProAgent1230 
xcopy /b /v /y /s %genericPath%\Files\runupdate.bat %genericPath%\Pack\ProAgent1230 
xcopy /b /v /y /s %genericPath%\Files\updateAgent.cmd %genericPath%\Pack\ProAgent1230 

:Archieve 
set archievePatch= %genericPath%\Pack 

7z.exe a %genericPath%\Pack "%archievePatch%" 

rmdir /s /q "%genericPath%\Pack" 

PATH %genericPath%\FF 

exit 
+0

da, wenn SQL Server jemals in der Lage zu Batch-Dateien ausgeführt werden? –

+0

Können Sie erklären, was Sie mit einem einfachen Beispiel erreichen möchten? –

+0

Ich meine, wir haben eine Überwachungssoftware und es verteilt Dateien. Aber ich möchte das Paket mit zip verteilen. Ich verwende Regeln und Jobs, um das zu tun. Erstellen Sie einen Job, um diese Batch- und Zip-Dateien auszuführen, danach einen weiteren Job zu verteilen. –

Antwort

0

Sie müssen den Ausgangstyp angeben:

7z.exe a -tzip %genericPath%\Pack "%archievePatch%"\ 

Alternativ:

7z.exe a %genericPath%\Pack.zip "%archievePatch%"\ 

(Hinweis: die Backslash auf die Quelle erforderlich ist, da sie den Ordner bedeutet)

Bezahlen Sie diese Websites:

Beispiele für 7-Zip-Befehl: http://www.dotnetperls.com/7-zip-examples

Zipping Ordner: http://www.wikihow.com/Use-7Zip-to-Create-Multiple-Compressed-Folders-in-One-Go

+0

Hey, aber es ändert nur die Erweiterung? Denn wenn ich in die Zip-Datei komme, sehe ich dort keinen Ordner mit dem Namen Pack :) –

+0

Ich habe ein anderes Problem in Ihrem Befehl übersehen. Sie müssen angeben, dass Ihre Quelle ein Ordner und keine Datei ist, indem Sie am Ende einen umgekehrten Schrägstrich (\) hinzufügen. Ich habe meinen Beitrag aktualisiert, um dies zu berücksichtigen. –

0

danken Ihnen für Ihre Hilfe. Ich habe das Skript konfiguriert, und jetzt kann ich Pack.zip mit dem unten angegebenen Skript bekommen. Allerdings kann ich das nicht auf dem Computer meines Kunden tun. Wenn ich einen bestimmten Pfad für Umgebungsvariablen definiere, funktioniert das nicht. Der Zielordner befindet sich in einem Master-Ordner mit dem Namen Win Nix und wenn ich versuche, diese Zip-Datei zu erstellen, erstellt er mir einfach eine Datei mit dem Namen Nix und keine Zip, keine kopierten Dateien enthalten. Wie kann ich das lösen?

Dank

echo off 

    if not exist "C:\Pack" mkdir %genericPath%\Pack 
    if not exist "C:\ProAgent" mkdir %genericPath%\Pack\ProAgent 
    if not exist "C:\ProAgent1230" mkdir %genericPath%\Pack\ProAgent1230 

    xcopy /b /v /y /s %genericPath%\Filter-Inventory\filter.ini %genericPath%\Pack\ProAgent 
    xcopy /b /v /y /s %genericPath%\Filter-Inventory\pvinvent.ini %genericPath%\Pack\ProAgent 
    xcopy /b /v /y /s %genericPath%\Registry\updateProAgent.reg %genericPath%\Pack\ProAgent1230 
    xcopy /b /v /y /s %genericPath%\Files\$update$.bat %genericPath%\Pack\ProAgent1230 
    xcopy /b /v /y /s %genericPath%\Files\runscript.vbs %genericPath%\Pack\ProAgent1230 
    xcopy /b /v /y /s %genericPath%\Files\runupdate.bat %genericPath%\Pack\ProAgent1230 
    xcopy /b /v /y /s %genericPath%\Files\updateAgent.cmd %genericPath%\Pack\ProAgent1230 


    set archievePatch= %genericPath%\Pack 


    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 %archievePatch% %genericPath%\Pack.zip 
    rmdir /s /q "%genericPath%\Pack" 
    exit