Daten per Script in eine ZIP-Datei sichern
Hallo Zusammen,
gibt es eine möglichkeit den Inhalt eines Verzeichnisses per CMD-Script in ein ZIP-Archiv zu sichern?
mfg
n4426
gibt es eine möglichkeit den Inhalt eines Verzeichnisses per CMD-Script in ein ZIP-Archiv zu sichern?
mfg
n4426
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4224
Url: https://administrator.de/contentid/4224
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
19 Kommentare
Neuester Kommentar
Alles was du brauchst findest du auf der Winzip Homepage:
Seite für Befehlszeilenerweiterung:
http://www.winzip.de/prodpagecl.htm
Download der Befehlszeilenerweiterung auch für Batchvorgänge:
http://www.winzip.de/downcl.htm
Wenn du das downgeloaded und enzippt bzw. installiert hast, findest du unter anderem die Datei >WZCLINE.HLP<.
Diese Datei mit Doppelklick öffnen, dann klickst du auf Hilfethemen, Inhalt und öffnest dort das Buch WZZIP. Hier findst du einmal wie man das ganze anwendet unter >Using WZZIP< und die Referenz aller befehle mit >WZZIP Referenz<.
Seite für Befehlszeilenerweiterung:
http://www.winzip.de/prodpagecl.htm
Download der Befehlszeilenerweiterung auch für Batchvorgänge:
http://www.winzip.de/downcl.htm
Wenn du das downgeloaded und enzippt bzw. installiert hast, findest du unter anderem die Datei >WZCLINE.HLP<.
Diese Datei mit Doppelklick öffnen, dann klickst du auf Hilfethemen, Inhalt und öffnest dort das Buch WZZIP. Hier findst du einmal wie man das ganze anwendet unter >Using WZZIP< und die Referenz aller befehle mit >WZZIP Referenz<.
Hi,
wenn Du ein Freeware-Tool nutzen willst, dann zieh Dir 7-Zip unter http://www.7-zip.org/dl/7z313.exe
Installieren und dann den Pfad auf das Binary setzen: set path="%path%;c:\Programme\7-Zip" oder halt die 7z.exe nach %systemroot%\system32 kopieren. Wenn Du mit der dosbox arbeitest, mach eine neue auf, damit die Einstellung zieht.
Einen Ordner komprimieren mit: 7z.exe a -r archivname.zip verzeichnisname\*
Grüße,
Fritz
wenn Du ein Freeware-Tool nutzen willst, dann zieh Dir 7-Zip unter http://www.7-zip.org/dl/7z313.exe
Installieren und dann den Pfad auf das Binary setzen: set path="%path%;c:\Programme\7-Zip" oder halt die 7z.exe nach %systemroot%\system32 kopieren. Wenn Du mit der dosbox arbeitest, mach eine neue auf, damit die Einstellung zieht.
Einen Ordner komprimieren mit: 7z.exe a -r archivname.zip verzeichnisname\*
Grüße,
Fritz
Hi.
Winrar ist eine Oberfläche für das Programm RAR (Roshal Archiver), das natürlich ebenfalls im Winrar-Paket enthalten ist. Wenn Du es benutzen willst, mußt Du in Deinem Script entweder
- den kompletten Pfad zu rar.exe angeben oder
- den Ordner, der rar.exe enthält, in die PATH-Variable einbinden oder
- rar.exe nach %systemroot%\system32 oder das 64bit-Äquivalent dieses Ordners kopieren
Ich gehe mal davon aus, daß Du Winrar unter "c:\programme\winrar\" installiert hast und der komplette Pfad also "c:\programme\winrar\rar.exe" ist.
Weiterhin gehe ich davon aus, daß die zu sichernden Dateien unter "c:\backup\" liegen.
Ändere die Pfade im Script entsprechend ab.
@echo OFF
FOR /F "delims==" %%D IN ('DIR c:\backup /A /B /S') DO (
"c:\programme\winrar\rar.exe" m -r "c:\backup.rar" "%%D"
)
Gruss,
fritzo
P.S.: Batch-Scripting ist ok, ich verwende Batches auch noch für Einzeiler in der Dosbox. Allerdings soll erwähnt sein, daß es mittlerweile wesentlich bessere Alternativen gibt. "VBScript" ist der Nachfolger der MS-DOS Shell und viel besser zu programmieren. Noch ein Stück leistungsfähiger ist dann dessen Nachfolger PowerShell - das ist die aktuellste Scriptsprache von Microsoft und wenn Du Scripting lernen und Dich in Rechnerautomatisierung mittels Scripten reinknien willst, dann solltest Du Dir meiner Meinung nach diese unbedingt ansehen.
Winrar ist eine Oberfläche für das Programm RAR (Roshal Archiver), das natürlich ebenfalls im Winrar-Paket enthalten ist. Wenn Du es benutzen willst, mußt Du in Deinem Script entweder
- den kompletten Pfad zu rar.exe angeben oder
- den Ordner, der rar.exe enthält, in die PATH-Variable einbinden oder
- rar.exe nach %systemroot%\system32 oder das 64bit-Äquivalent dieses Ordners kopieren
Ich gehe mal davon aus, daß Du Winrar unter "c:\programme\winrar\" installiert hast und der komplette Pfad also "c:\programme\winrar\rar.exe" ist.
Weiterhin gehe ich davon aus, daß die zu sichernden Dateien unter "c:\backup\" liegen.
Ändere die Pfade im Script entsprechend ab.
@echo OFF
FOR /F "delims==" %%D IN ('DIR c:\backup /A /B /S') DO (
"c:\programme\winrar\rar.exe" m -r "c:\backup.rar" "%%D"
)
Gruss,
fritzo
P.S.: Batch-Scripting ist ok, ich verwende Batches auch noch für Einzeiler in der Dosbox. Allerdings soll erwähnt sein, daß es mittlerweile wesentlich bessere Alternativen gibt. "VBScript" ist der Nachfolger der MS-DOS Shell und viel besser zu programmieren. Noch ein Stück leistungsfähiger ist dann dessen Nachfolger PowerShell - das ist die aktuellste Scriptsprache von Microsoft und wenn Du Scripting lernen und Dich in Rechnerautomatisierung mittels Scripten reinknien willst, dann solltest Du Dir meiner Meinung nach diese unbedingt ansehen.
Hey Asarius,
es ist erstmal schön, dass Fritzo dir bei den Batch-Dateien weitergeholfen hat. Allerdings gehe ich mit den Skriptsprachen nicht ganz konform.
BATCH ist in engeren Sinn keine Skriptsparche. Es ist eine Stapelverarbeitung in Kommandozeile. Der Ursprung ist in DOS zu finden und das Ding nennt sich auh Stapelverarbeitung. Sicherlich ist die Abgrenzung nicht ganz einfach, aber BATCH macht nichts anderes, als Kommondozeilenbefehle Schritt für Schritt abzuarbeiten. Also Befehle, die in der SHELL vorkommen. Das hat Vorteile und Nachteile. Aber ein eigenes Gehirn hat BATCH nicht. Trotzdem ist es sicherlich eine gute und einfache Sache um bestimmte Aufgaben zu erledigen.
Auch wenn die Kommandozeile wie DOS aussieht, hat diese nicht mehr viel mit dem BS zu tun. Es ist Windows.
VB-Skript wurde für Windows entwickelt und sogar in Webseitenprogrammierung gegen JavaSkript aufgestellt. Allerdings erhielt VB-Skript nie die Bedeutung, die MS sich gerne versprochen hätte. In ASP wird auch in der Form Programmiert. Das spätere ASP.NET hat aber wie die Kommandozeile von Windows genausowenig mit DOS wie ASP.NET mit ASP zu tun.
Am Ende des letzten Jahrtausends entwickelte MS .NET. Hierbei waren auch Köpfe der Delphi-Zunft beteiligt, eine unter Kenner sehr beliebte Programmiersprache (ursprung aus Pascal), die immer noch ihre Anhänger und Verfechter hat. Microsoft sah sich mit komplizierten API Aufrufen und COM sowie COM+ als auch in der Kompiliersituation in einer Sackgasse. Auch das mächtige C++ machte vielen Programmieren Schwierigkeiten, da die Speicherverantwortung in den Händen des Programmieres lag. So war es aus sich von MS Zeit für einen Neuanfang.
.NET hatte auch seine Kritiker, war aber sicherlich ein Konsequenter Weg in die Zukunft und räumte mit vielen Problemen auf. Allerdings ist es sicherlich auch nicht das Allheilmittel. Mittlerweilen sind wir in Version 4 angekommen. Über .NET könnte man noch vieles hier Schreiben, allerdings soll es nur als Überleitung zur deiner Frage helfen, der Powershell.
Die Powershell wollte die Shell neu erfinden, lehnte sich an die UNIX Shell (BASH) an und wollte diese sogar noch übertreffen. Die Powershell ist eine Skriptsprache, die sich die .NET Welt zu nutze macht und viele Ideen der BASH inkludiert. Sicherlich ist die Powershell ein interessanter Ansatz, doch ob die UNIX Shell übertroffen wurde, kann bezweifelt werden. Gerade die Einfachheit und die Mächtigkeit der BASH macht diese unübertroffen und nach wie vor beliebt. Die Powershell ist vom Verständnis her komplexer aufgehängt.
Dennoch, in der Windows Welt wird für den Administrator auf Dauer kein Weg daran vorbei führen. Teilweise gibt es in höheren Serverprodukten wie Exchange oder Sharepoint bereits heute Aufgaben, die kaum ohne Powershell machbar sind und MS auch seinen Fokus darauf legt.
Bei den täglichen Aufgaben der Administration geht es darum, das geignete, zielgerichtete und zuverlässige Mittel zu finden. Für manche Aufgaben ist das eine Mittel auch besser geeignet als das andere. Ein Xcopy oder Robocopy setzt du sicherlich besser mit Batch ab als mit Powershell, obwohl beides geht. Bei der Steuerung von Windows Sicherungssoftware dagegen würde ich mittlerweilen die Powershell vorziehen, auch wenn die grundlegenden Befehle mit Batch auch erreichbar wären.
Und jetzt schließt sich der Kreis. Bei der Datensicherung mag es sicherlich verschiedene Wege und Arten geben. Manchmal mag auch BATCH der Weg sein. Doch als Admin hast du die Verantwortung über die Daten. Es reicht nicht nur ein Werkzeug wie BATCH oder Powershell zu verwenden. Die Aktionen müssen protokolliert und geprüft werden. Regelmäßig muß die Wiederherstellbarkeit geprüft werden. Die Daten müssen getrennt und sicher aufbewahrt werden. usw. Nur eine Batch reicht nicht um zu sagen, die Aufgabe wurde bewältigt.
es ist erstmal schön, dass Fritzo dir bei den Batch-Dateien weitergeholfen hat. Allerdings gehe ich mit den Skriptsprachen nicht ganz konform.
BATCH ist in engeren Sinn keine Skriptsparche. Es ist eine Stapelverarbeitung in Kommandozeile. Der Ursprung ist in DOS zu finden und das Ding nennt sich auh Stapelverarbeitung. Sicherlich ist die Abgrenzung nicht ganz einfach, aber BATCH macht nichts anderes, als Kommondozeilenbefehle Schritt für Schritt abzuarbeiten. Also Befehle, die in der SHELL vorkommen. Das hat Vorteile und Nachteile. Aber ein eigenes Gehirn hat BATCH nicht. Trotzdem ist es sicherlich eine gute und einfache Sache um bestimmte Aufgaben zu erledigen.
Auch wenn die Kommandozeile wie DOS aussieht, hat diese nicht mehr viel mit dem BS zu tun. Es ist Windows.
VB-Skript wurde für Windows entwickelt und sogar in Webseitenprogrammierung gegen JavaSkript aufgestellt. Allerdings erhielt VB-Skript nie die Bedeutung, die MS sich gerne versprochen hätte. In ASP wird auch in der Form Programmiert. Das spätere ASP.NET hat aber wie die Kommandozeile von Windows genausowenig mit DOS wie ASP.NET mit ASP zu tun.
Am Ende des letzten Jahrtausends entwickelte MS .NET. Hierbei waren auch Köpfe der Delphi-Zunft beteiligt, eine unter Kenner sehr beliebte Programmiersprache (ursprung aus Pascal), die immer noch ihre Anhänger und Verfechter hat. Microsoft sah sich mit komplizierten API Aufrufen und COM sowie COM+ als auch in der Kompiliersituation in einer Sackgasse. Auch das mächtige C++ machte vielen Programmieren Schwierigkeiten, da die Speicherverantwortung in den Händen des Programmieres lag. So war es aus sich von MS Zeit für einen Neuanfang.
.NET hatte auch seine Kritiker, war aber sicherlich ein Konsequenter Weg in die Zukunft und räumte mit vielen Problemen auf. Allerdings ist es sicherlich auch nicht das Allheilmittel. Mittlerweilen sind wir in Version 4 angekommen. Über .NET könnte man noch vieles hier Schreiben, allerdings soll es nur als Überleitung zur deiner Frage helfen, der Powershell.
Die Powershell wollte die Shell neu erfinden, lehnte sich an die UNIX Shell (BASH) an und wollte diese sogar noch übertreffen. Die Powershell ist eine Skriptsprache, die sich die .NET Welt zu nutze macht und viele Ideen der BASH inkludiert. Sicherlich ist die Powershell ein interessanter Ansatz, doch ob die UNIX Shell übertroffen wurde, kann bezweifelt werden. Gerade die Einfachheit und die Mächtigkeit der BASH macht diese unübertroffen und nach wie vor beliebt. Die Powershell ist vom Verständnis her komplexer aufgehängt.
Dennoch, in der Windows Welt wird für den Administrator auf Dauer kein Weg daran vorbei führen. Teilweise gibt es in höheren Serverprodukten wie Exchange oder Sharepoint bereits heute Aufgaben, die kaum ohne Powershell machbar sind und MS auch seinen Fokus darauf legt.
Bei den täglichen Aufgaben der Administration geht es darum, das geignete, zielgerichtete und zuverlässige Mittel zu finden. Für manche Aufgaben ist das eine Mittel auch besser geeignet als das andere. Ein Xcopy oder Robocopy setzt du sicherlich besser mit Batch ab als mit Powershell, obwohl beides geht. Bei der Steuerung von Windows Sicherungssoftware dagegen würde ich mittlerweilen die Powershell vorziehen, auch wenn die grundlegenden Befehle mit Batch auch erreichbar wären.
Und jetzt schließt sich der Kreis. Bei der Datensicherung mag es sicherlich verschiedene Wege und Arten geben. Manchmal mag auch BATCH der Weg sein. Doch als Admin hast du die Verantwortung über die Daten. Es reicht nicht nur ein Werkzeug wie BATCH oder Powershell zu verwenden. Die Aktionen müssen protokolliert und geprüft werden. Regelmäßig muß die Wiederherstellbarkeit geprüft werden. Die Daten müssen getrennt und sicher aufbewahrt werden. usw. Nur eine Batch reicht nicht um zu sagen, die Aufgabe wurde bewältigt.
Hi Asarius,
ich hoffe, daß linkit Dich nicht allzusehr verwirrt hat. Ich würde es darauf ankommen lassen, zu behaupten, daß es eine Definitionsfrage ist. Da er weit ausholt, muß ich das wohl auch tun - und ich dachte schon, es würde ein ruhiger Abend
Batch
Per definitionem ist Batch (engl. für "Stapel" (Anm. d. Verf.: "haha")) eine Stapelverarbeitung, die Shell-Befehle Schritt für Schritt abarbeitet. Batch-Files stammen aus der (MS-)DOS-Welt.
MS-DOS
Früher war MS-DOS ein eigenes Betriebssystem ohne Abhängigkeiten zu Windows, das es damals noch gar nicht gab. Es war eigentlich eine Portierung von Q-DOS, das von CP/M abstammt. Microsoft lizenzierte Q-DOS und entwickelte daraus MS-DOS, was lange Zeit überaus erfolgreich war. Dann wurde MS-DOS weiterentwickelt und MS schuf für die Private Consumer eine grafische Oberfläche namens Windows95, das dann von Windows98 abgelöst wurde, das seinerseits wiederum von Windows ME abgelöst wurde. Die Windows-Versionen für Private Consumer waren früher nichts anderes als grafische Erweiterungen für das darunter liegende MS-DOS-System.
Windows
MS entwickelte aber parallel auch ein Business-Betriebssystem, das nichts mit MS-DOS zu tun hatte: Windows (for Workgroups) 3.1 mit einem eigenen Kernel und Netzwerkfunktionen (einen TCP-Stack hatte dieses System noch nicht, aber dafür das Protokoll NetBEUI für Peer-To-Peer-Verbindungen). Dieses wurde dann weiterentwickelt zu Windows NT 4, daraus entstand Windows 2000. Eine DOS-Shell gab es auch hier - nur wurde sie nicht mehr nativ ausgeführt, sondern emuliert - sie lief als Prozess im Betriebssystem.
Windows und MS-DOS und Private und Business
Mit Windows 2000 wurden die beiden Welten zusammengeführt - es war sowohl für Business Consumer als auch für Private Consumer verfügbar.
Scriptsprachen
Scriptsprachen verfügen meist über eine eigenen Parser, der die Befehle während der Laufzeit interpretiert. Sie stellen etwas ganz anderes dar als ein Batchscript unter DOS und sind in der Regel viel mächtiger und flexibler als eine Stapelverarbeitung.
Soweit stimme ich eigentlich voll und ganz zu.
Script vs. Batch bzw. und/oder bzw. =?
Aber:
- Batch lässt sich (natürlich) durch COM- oder EXE-Files oder auch Batch-Scripte in seiner Funktionalität erweitern
- Einlesen, Verarbeitung und Ausgabe von Variablen ist möglich
- Sprungmarken sind möglich
- Batch verfügt über eine automatische Typisierung
- Funktionen mit Rückgabewert sind möglich
Diese Möglichkeiten sind allesamt Bestandteile von Scriptsprachen. Batch weist lange nicht die Möglichkeiten auf, die mit VBScript, JS, Perl oder anderen Scriptsprachen gegeben sind, aber es hat zumindest dafür gereicht, daß es bis heute überlebt hat. Scripts werden übrigens auch stapelweise verarbeitet - wobei ein guter Scriptinterpreter in der Regel das Script als ganzes vor der Ausführung prüft. Es gibt aber auch Script-Engines, die das nicht tun.
Soweit dazu.
.NET
.NET ist meiner Meinung nach der beste programmiertechnische Ansatz, den MS je hatte. Es ist mittlerweile ziemlich egal, womit man unter Windows programmiert - zugrunde liegen immer die installierten Frameworks. Lediglich die Sprachen und somit die programmiertechnische Syntax sind unterschiedlich, die verwendeten Assemblies und API-Calls sind hingegen immer die selben. Wie gut .NET ist, lässt sich daran ermessen, daß es seit geraumer Zeit eine Linux-Portierung namens MONO gibt, die soweit mir bekannt auch fleissig weiterentwickelt wird.
Bash?
Aus diesem Grunde muß ich linkits Argument, daß die PowerShell die Unix-Shell nicht übertreffen könnte, vehement widersprechen. Der zweite Grund ist der klare Widerspruch - Bash (Bourne-again-Shell) oder auch andere CLI/Shell-Interfaces sind nämlich nichts anderes als die oben bereits erwähnten und vielfach geschmähten und verpönten Stapelverarbeitungs-Umgebungen Sie ist der DOS-Batch-Stapelverarbeitung auch unglaublich ähnlich (wenn man von Funktionen wie den Regular Expressions absieht, die MS-DOS niemals leisten wird).
PowerShell
Korrekt - PowerShell übernimmt viele Funktionalitäten der Unix-Shell-Welt und vereint sie mit dem Zugriff auf .NET und die Windows-API bzw. auf beliebige APIs. Batch und VBScript sind veraltet, wenn auch noch beliebt. Übrigens werden sehr viele Funktionalitäten der Batch emuliert, so funktioniert zB ein "DIR" zumindest ähnlich.
Take the limousine, dont take the donkey cart
Es gibt, wie linkit erwähnte, viele Wege, die nach Rom führen. Tip von mir - nimm nicht die alten Strassen mit den vielen Schlaglöchern. Nimm einfach die bestens ausgebaute Via Appia mit vielen netten kleinen Cafes am Straßenrand Nimm Powershell.
Viele Grüße,
fritzo
ich hoffe, daß linkit Dich nicht allzusehr verwirrt hat. Ich würde es darauf ankommen lassen, zu behaupten, daß es eine Definitionsfrage ist. Da er weit ausholt, muß ich das wohl auch tun - und ich dachte schon, es würde ein ruhiger Abend
Batch
Per definitionem ist Batch (engl. für "Stapel" (Anm. d. Verf.: "haha")) eine Stapelverarbeitung, die Shell-Befehle Schritt für Schritt abarbeitet. Batch-Files stammen aus der (MS-)DOS-Welt.
MS-DOS
Früher war MS-DOS ein eigenes Betriebssystem ohne Abhängigkeiten zu Windows, das es damals noch gar nicht gab. Es war eigentlich eine Portierung von Q-DOS, das von CP/M abstammt. Microsoft lizenzierte Q-DOS und entwickelte daraus MS-DOS, was lange Zeit überaus erfolgreich war. Dann wurde MS-DOS weiterentwickelt und MS schuf für die Private Consumer eine grafische Oberfläche namens Windows95, das dann von Windows98 abgelöst wurde, das seinerseits wiederum von Windows ME abgelöst wurde. Die Windows-Versionen für Private Consumer waren früher nichts anderes als grafische Erweiterungen für das darunter liegende MS-DOS-System.
Windows
MS entwickelte aber parallel auch ein Business-Betriebssystem, das nichts mit MS-DOS zu tun hatte: Windows (for Workgroups) 3.1 mit einem eigenen Kernel und Netzwerkfunktionen (einen TCP-Stack hatte dieses System noch nicht, aber dafür das Protokoll NetBEUI für Peer-To-Peer-Verbindungen). Dieses wurde dann weiterentwickelt zu Windows NT 4, daraus entstand Windows 2000. Eine DOS-Shell gab es auch hier - nur wurde sie nicht mehr nativ ausgeführt, sondern emuliert - sie lief als Prozess im Betriebssystem.
Windows und MS-DOS und Private und Business
Mit Windows 2000 wurden die beiden Welten zusammengeführt - es war sowohl für Business Consumer als auch für Private Consumer verfügbar.
Scriptsprachen
Scriptsprachen verfügen meist über eine eigenen Parser, der die Befehle während der Laufzeit interpretiert. Sie stellen etwas ganz anderes dar als ein Batchscript unter DOS und sind in der Regel viel mächtiger und flexibler als eine Stapelverarbeitung.
Soweit stimme ich eigentlich voll und ganz zu.
Script vs. Batch bzw. und/oder bzw. =?
Aber:
- Batch lässt sich (natürlich) durch COM- oder EXE-Files oder auch Batch-Scripte in seiner Funktionalität erweitern
- Einlesen, Verarbeitung und Ausgabe von Variablen ist möglich
- Sprungmarken sind möglich
- Batch verfügt über eine automatische Typisierung
- Funktionen mit Rückgabewert sind möglich
Diese Möglichkeiten sind allesamt Bestandteile von Scriptsprachen. Batch weist lange nicht die Möglichkeiten auf, die mit VBScript, JS, Perl oder anderen Scriptsprachen gegeben sind, aber es hat zumindest dafür gereicht, daß es bis heute überlebt hat. Scripts werden übrigens auch stapelweise verarbeitet - wobei ein guter Scriptinterpreter in der Regel das Script als ganzes vor der Ausführung prüft. Es gibt aber auch Script-Engines, die das nicht tun.
Soweit dazu.
.NET
.NET ist meiner Meinung nach der beste programmiertechnische Ansatz, den MS je hatte. Es ist mittlerweile ziemlich egal, womit man unter Windows programmiert - zugrunde liegen immer die installierten Frameworks. Lediglich die Sprachen und somit die programmiertechnische Syntax sind unterschiedlich, die verwendeten Assemblies und API-Calls sind hingegen immer die selben. Wie gut .NET ist, lässt sich daran ermessen, daß es seit geraumer Zeit eine Linux-Portierung namens MONO gibt, die soweit mir bekannt auch fleissig weiterentwickelt wird.
Bash?
Aus diesem Grunde muß ich linkits Argument, daß die PowerShell die Unix-Shell nicht übertreffen könnte, vehement widersprechen. Der zweite Grund ist der klare Widerspruch - Bash (Bourne-again-Shell) oder auch andere CLI/Shell-Interfaces sind nämlich nichts anderes als die oben bereits erwähnten und vielfach geschmähten und verpönten Stapelverarbeitungs-Umgebungen Sie ist der DOS-Batch-Stapelverarbeitung auch unglaublich ähnlich (wenn man von Funktionen wie den Regular Expressions absieht, die MS-DOS niemals leisten wird).
PowerShell
Korrekt - PowerShell übernimmt viele Funktionalitäten der Unix-Shell-Welt und vereint sie mit dem Zugriff auf .NET und die Windows-API bzw. auf beliebige APIs. Batch und VBScript sind veraltet, wenn auch noch beliebt. Übrigens werden sehr viele Funktionalitäten der Batch emuliert, so funktioniert zB ein "DIR" zumindest ähnlich.
Take the limousine, dont take the donkey cart
Es gibt, wie linkit erwähnte, viele Wege, die nach Rom führen. Tip von mir - nimm nicht die alten Strassen mit den vielen Schlaglöchern. Nimm einfach die bestens ausgebaute Via Appia mit vielen netten kleinen Cafes am Straßenrand Nimm Powershell.
Viele Grüße,
fritzo
Zitat von @Asarius:
Hey Fritzo
ich danke dir erstmal herzlich für dein Hilfe mit meinem Zip- Anliegen.
Ist PowerShell auch via Editor zu erstellen oder brauche ich dafür ein neues Tool und verändert sich die gesamte
Programmiersprache dadurch oder die Befehle??
worauf muss ich mich dabei denn einstellen?
Gruss,
Asarius
Hey Fritzo
ich danke dir erstmal herzlich für dein Hilfe mit meinem Zip- Anliegen.
Ist PowerShell auch via Editor zu erstellen oder brauche ich dafür ein neues Tool und verändert sich die gesamte
Programmiersprache dadurch oder die Befehle??
worauf muss ich mich dabei denn einstellen?
Gruss,
Asarius
- PowerShell kannst Du parallel zur Dos-Box (cmd) verwenden - Du kannst Dir das Ganze also erst einmal ganz in Ruhe ansehen, ohne daß irgendetwas ersetzt oder zerstört wird
- viele Befehle, die Du vielleicht von Batches her kennst, funktionieren auch in PowerShell, entweder genauso oder zumindest ähnlich. Dies sind aber nicht die Original-Befehle, sondern Aliase auf Scripte oder PowerShell-Befehle
- nach der Installation von PowerShell hast Du parallel zur cmd-Shell / Dosbox eine weitere Shell, die Du unabhängig von der alten nutzen kannst
- Du kannst die Befehle entweder direkt in der PowerShell eingeben (dort werden sie direkt ausgeführt) oder aber auch ein Script schreiben. Hierzu kannst Du natürlich Notepad nehmen, ich rate Dir aber zu einem ordentlichen Editor
- Editoren für PowerShell gibt es einige - ich nutze die kostenlose PowerGUI. Ansonsten ist aber auch mit der PowerISE ein Editor frei Haus dabei
Die PowerShell liegt momentan in der Version 2.0 vor. Die Installation ist nicht weiter schwierig. Du benötigst insgesamt 3 Komponenten und solltest vor der Installation derselben auf jeden Fall das .NET Framework installiert haben. Ich gehe davon aus, daß Du .NET Framework in den Versionen 1.1 und 2.0 bereits auf Deinem Rechner hast - das kannst Du in Systemsteuerung/Software nachprüfen.
Die drei erwähnten Komponenten kannst Du bei Microsoft unter diesem Linkherunterladen (achte dabei darauf, daß Du sie entsprechend Deines Systems auswählst). Es sind:
- Windows Remote Management (WinRM) 2.0
- Windows PowerShell 2.0
- Background Intelligent Transfer Service (BITS) 4.0
Ansonsten geh vor wie in den zahlreichen Anleitungen für die Installation von PowerShell beschrieben. Wenn Du nicht zurecht kommst, poste einfach nochmal hier.
Viel Erfolg + viele Grüße,
fritzo
Guten Abend
Also erstmal allerbesten Dank für diese umfangreichen Antworten (Ich gebe zu mir quallmt der Schädel).
Ich mache das alles GOTT SEI DANK nur privat und brauche das nicht zwangsläufig für die Arbeit.
Habe ich das richtig Verstanden der grundlegende Unterschied ist der das Batch die Befehse stapelt und PowerShell sie nacheinander abarbeitet (so wie bei einer SPS)?
Wie ihr seht ich habe kein Plan von sowas ich hoffe daher ihr habt noch etwas Gedult mit mir..
Ich bekomme einfach nicht den Powershell für win7 64bit..
MFG
Asarius
Also erstmal allerbesten Dank für diese umfangreichen Antworten (Ich gebe zu mir quallmt der Schädel).
Ich mache das alles GOTT SEI DANK nur privat und brauche das nicht zwangsläufig für die Arbeit.
Habe ich das richtig Verstanden der grundlegende Unterschied ist der das Batch die Befehse stapelt und PowerShell sie nacheinander abarbeitet (so wie bei einer SPS)?
Wie ihr seht ich habe kein Plan von sowas ich hoffe daher ihr habt noch etwas Gedult mit mir..
Ich bekomme einfach nicht den Powershell für win7 64bit..
MFG
Asarius
Fast.
MS-DOS-Batchfiles werden stapelweise verarbeitet, es wird immer ein Befehl vom Stapel genommen und abgearbeitet, anschließend wird der nächste vom Stapel genommen und so weiter und so fort. Korrekt - die Verarbeitung geschieht dabei rein sequentiell wie bei einer SPS/PLC-Steuerung (wobei modernere SPS-Systeme bereits nicht mehr nur rein sequentiell arbeiten, sondern teilweise schon Bedingungen und Verzeigungen haben, ähnlich wie die größeren Prozessleitsysteme).
PowerShell hingegen weist alle Merkmale einer modernen Scriptsprache auf, inklusive einer starken Typisierung, Funktionen mit Return Value und Objektorientierung. Die letztgenannte geht sehr weit für eine Scriptsprache, denn -alles- in PowerShell ist ein Objekt. Auch die Rückgabewerte, die Du von Befehlen als Ausgabe erhältst, sind Objekte. Das heisst, dass Du nicht mehr -wie bei Batchfiles- den Text auf einen bestimmten Begriff filtern mußt, um ihn zu verarbeiten, was manchmal unmöglich ist, sondern Du erhältst ein Objekt oder eine Objektsammlung inklusive ihrer Eigenschaften und Methoden zurück, kannst sie weiterverarbeiten, filtern, sortieren, einer Variablen zuweisen etc.pp.
Was auch kein Wunder ist - ab Windows 7 ist die PowerShell in der Version 2.0 vorinstalliert Du müßtest sie so aus der Hüfte starten können. Falls Du kein Symbol auf dem Desktop und auch keine Verknüpfung im Startmenu haben solltest, dann führ einfach den Befehl "powershell.exe" aus und dann müßte sie sich öffnen. Falls sie nicht installiert sein sollte, dann müßtest Du sie ggfs. nachinstallieren. Was natürlich auch sein könnte - Du arbeitest bereits damit und weißt es nur nicht *g* - ist die Shell, in die Du Befehle eingibst, schwarz (cmd) oder blau-weiß (PowerShell) und steht vor dem Cursor lediglich der aktuelle Pfad (cmd) oder zusätzlich noch ein "PS" (PowerShell)?
Beste Grüße,
fritzo
MS-DOS-Batchfiles werden stapelweise verarbeitet, es wird immer ein Befehl vom Stapel genommen und abgearbeitet, anschließend wird der nächste vom Stapel genommen und so weiter und so fort. Korrekt - die Verarbeitung geschieht dabei rein sequentiell wie bei einer SPS/PLC-Steuerung (wobei modernere SPS-Systeme bereits nicht mehr nur rein sequentiell arbeiten, sondern teilweise schon Bedingungen und Verzeigungen haben, ähnlich wie die größeren Prozessleitsysteme).
PowerShell hingegen weist alle Merkmale einer modernen Scriptsprache auf, inklusive einer starken Typisierung, Funktionen mit Return Value und Objektorientierung. Die letztgenannte geht sehr weit für eine Scriptsprache, denn -alles- in PowerShell ist ein Objekt. Auch die Rückgabewerte, die Du von Befehlen als Ausgabe erhältst, sind Objekte. Das heisst, dass Du nicht mehr -wie bei Batchfiles- den Text auf einen bestimmten Begriff filtern mußt, um ihn zu verarbeiten, was manchmal unmöglich ist, sondern Du erhältst ein Objekt oder eine Objektsammlung inklusive ihrer Eigenschaften und Methoden zurück, kannst sie weiterverarbeiten, filtern, sortieren, einer Variablen zuweisen etc.pp.
"Ich bekomme einfach nicht den Powershell für win7 64bit.."
Was auch kein Wunder ist - ab Windows 7 ist die PowerShell in der Version 2.0 vorinstalliert Du müßtest sie so aus der Hüfte starten können. Falls Du kein Symbol auf dem Desktop und auch keine Verknüpfung im Startmenu haben solltest, dann führ einfach den Befehl "powershell.exe" aus und dann müßte sie sich öffnen. Falls sie nicht installiert sein sollte, dann müßtest Du sie ggfs. nachinstallieren. Was natürlich auch sein könnte - Du arbeitest bereits damit und weißt es nur nicht *g* - ist die Shell, in die Du Befehle eingibst, schwarz (cmd) oder blau-weiß (PowerShell) und steht vor dem Cursor lediglich der aktuelle Pfad (cmd) oder zusätzlich noch ein "PS" (PowerShell)?
Beste Grüße,
fritzo
Gern geschehen
Ah, Du brauchst noch etwas Lehrstoff. Nimm das hier: Online-eBook: Tobias Weltner - Mastering PowerShell
Ein paar Beispiele aus dem Netz:
Ah, Du brauchst noch etwas Lehrstoff. Nimm das hier: Online-eBook: Tobias Weltner - Mastering PowerShell
Ein paar Beispiele aus dem Netz:
####################################
# Das beliebte HelloWorld in der PoSh-Version
####################################
Write-Host "Hello, World!"
####################################
# UDP-Client
####################################
$port = 49152
$ep = New-Object System.Net.IPEndPoint ([IPAddress]::Loopback,$port)
$uc = New-Object System.Net.Sockets.UdpClient
$b = [Text.Encoding]::ASCII.GetBytes(„Client has connected!“)
$bs = $uc.Send($b,$b.length,$ep)
$uc.Close()
####################################
# UDP-Server
####################################
$port = 49152
$ep = New-Object System.Net.IPEndPoint ([IPAddress]::Any,$port)
$uc = New-Object System.Net.Sockets.UdpClient $port
$txt = $udpclient.Receive([ref]$ep)
[Text.Encoding]::ASCII.GetString($ep)
####################################
# Aktuellen Wetterbericht aus dem Netz holen
####################################
# Wetterdienst ansprechen
$wetter = New-WebServiceProxy -Uri http://www.webservicex.com/globalweather.asmx?WSDL
# Wetter für Köln abrufen:
$wetter.GetWeather(„Koeln“, „Germany“)
####################################
# Mauszeiger auf 300, 200 positionieren
####################################
[system.Reflection.Assembly]::LoadWithPartialName(„Microsoft.Forms“) | Out-Null
[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point(300,200)
####################################
# Logische Laufwerke ermitteln, Einzeiler
####################################
write-host Partitionen;write-host „****************************“;foreach ($drive in get-wmiobject win32_logicaldisk ) {“ | Name: “ + $drive.Name + “ | Größe: “ + [int]($drive.size/1GB) + „GB“}
Oh,
habe was vergessen. Hier die PowerShell-Version Deines Rar-Backup-Scripts:
Grüße,
fritzo
habe was vergessen. Hier die PowerShell-Version Deines Rar-Backup-Scripts:
Grüße,
fritzo
Clear-Host
Write-Host " PoSh Rar-Backup " -BackgroundColor "white" -ForegroundColor "black"
$rarexe = "d:\Programme\WinRAR\Rar.exe" # Pfad zur rar.exe
$parameter = "m -r" # Parameter move and recurse
$quelle = "c:\backup\" # Quellverzeichnis mit den Daten
$archiv = "c:\backup.rar" # Pfad und Name des Archivs
Write-Host (Get-ChildItem $quelle).Count zu archivierende Dateien im Verzeichnis $quelle gefunden
(Get-ChildItem $quelle)|Select-Object -Property name
Write-Host `n`n
Write-Host Aufruf: $rarexe $parameter $archiv $quelle
Write-Host starte Rar-Backup...
&$rarexe $parameter $archiv $quelle # Starten des Aufrufs durch das vorangestellte "&"
Hi,
die meisten Bücher, die ich habe, sind auf englisch geschrieben. Es gibt aber sehr viele kostenlose deutsche PowerShell-Sourcen im Netz, zB bei den Microsoft Scripting Guys. Falls Du, wie ich, analoge Bücher bevorzugst - ein deutsches, das ich sehr empfehlen kann, ist "Scripting mit Windows PowerShell 2.0 (Der Einsteiger-Workshop" von Tobias Weltner, Verlag: Microsoft Press. ISBN 978-3-86645-669-3, 34,90€.
vg,
fritzo
die meisten Bücher, die ich habe, sind auf englisch geschrieben. Es gibt aber sehr viele kostenlose deutsche PowerShell-Sourcen im Netz, zB bei den Microsoft Scripting Guys. Falls Du, wie ich, analoge Bücher bevorzugst - ein deutsches, das ich sehr empfehlen kann, ist "Scripting mit Windows PowerShell 2.0 (Der Einsteiger-Workshop" von Tobias Weltner, Verlag: Microsoft Press. ISBN 978-3-86645-669-3, 34,90€.
vg,
fritzo