Lieber cmd-Batch oder lieber Windows PowerShell lernen?

...komplette Frage anzeigen

3 Antworten

Powershell ist sozusagen die Weiterentwicklung von batch.

könnte ich ein Batch-Skript 1:1 in Powershell übernehmen?

Also, verstehe ich das richtig, dass es lediglich eine Vereinfachung ist, die auch objektorientierte Programmierung zulässt und sowohl UNIX als auch Batch integrieren kann?

0
@offeltoffel

Due alten Dos Befehle funktionieren in der Regel auch unter Powershell. Sehr intensiv habe ich mich allerdings nicht eingearbeitet, da ich mein Programm nur privat nutze und es so simpel wie möglich gehalten habe.

1

Wenn du von VBA für Excel kommst, wäre eigentlich Visual Basic Script ideal.

Kann ich damit auf Prozesse der Windows-Umgebung genauso gut eingehen wie mit Batch-Commandlines? Im Wesentlichen geht es darum, in bestimmter Reihenfolge Templates zu vervollständigen, .exe auszuführen und mit Daten zu versorgen und das ganze möglichst ohne große Programmumgebung (=Zeitersparnis in der Modellierung). Wie kann ich da mit Visual Basic Script rankommen?

0
@offeltoffel

Das ist alles kein Problem:

.exe ausführen:

CreateObject("WScript.Shell").Run "notepad.exe"

Templates? Sind das Textdateien? Die kannst du mit dem FileSystemObject öffnen und bearbeiten:

Sub OpenTextFileTest
    Const ForReading = 1, ForWriting = 2, ForAppending = 3
    Dim fs, f
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile("c:\testfile.txt", ForAppending,TristateFalse)
    f.Write "Hello world!"
    f.Close
End Sub

Quelle: https://msdn.microsoft.com/en-us/library/aa265347%28v=vs.60%29.aspx

Ein einfacher Editor reicht dir vollkommen, du kannst aber schon dir das Leben einfacher machen, indem du einen Editor verwendest, der Syntaxhighlighting und Zeilennummerierung beherrscht (Bsp. notepad++)

1
@Suboptimierer

Ja, die Templates sind Textdateien, die per Skript an geeigneten Stellen manipuliert werden. Notepad++ nutze ich bereits für solche Zweke wit Batch-Erstellung. Selbst das Visual Studio ist auf meinem Arbeitsrechner installiert.

Das Codebeispiel ist tatsächlich recht einfach, weil es eben die bekannte VB-Struktur nutzt! Das werde ich mir mal näher ansehen!

0

Du solltest Batch UND PowerShell lernen, da beides seine Vor- und Nachteile hat, beide ihre Daseinsberechtigung haben, und beide wirklich nützlich sind.

Das gilt übrigens für alle Werkzeuge! Und die Wahl des richtigen Werkzeuges ist ebenfalls extrem wichtig.

Apropos Wahl des richtigen Werkzeuges: Vielleicht ist eine Bash-Shell (nicht verwechseln mit Batch!) oder ein Python-Skript in deinem Falle angebrachter?

Es kommt natürlich immer darauf an, woher du deine Daten liest, was genau es für Daten sind, und wohin du sie später wieder schreibst.

Ohne weitere Infos wird dir hier keiner weiterhelfen können, aber so rein vom Bauchgefühl her, würde ich dir - bei deinem bisherigen Wissensstand - zur PowerShell raten. Die ist zwar deutlich komplexer als Batch, allerdings wirst du bei Batch vermutlich schnell an irgendwelche Grenzen stoßen.

Wenn du mehr Erfahrung hättest, würde ich dir ganz klar zu Bash (nicht Batch!) oder zu Python, Perl, Ruby raten, aber momentan halte ich die PowerShell am geeignetsten für dich.

Viel Erfolg! :)

Ich weiß nicht...Batch UND PowerShell ist vielleicht ein bisschen viel. Denk dran, ich bin KEIN Programmierer und KEIN Informatiker. Ich hab an einigen Stellen Halbwissen, aber ich finde Batch-Skripte schon unglaublich schwer zu lesen. Sowas wie VBA ist viel "natürlicher" zu lesen. Ich habe auch nicht die Zeit ständig mit Tutorials zu arbeiten und einfache Skripte tagelang zu testen bis sie dann mal funktionieren.

Bei mir in der Arbeitsgruppe werden Batches genutzt, die die Ausführung von Programmen in Windows automatisieren. Es geht um das Steuern von Umweltmodellen. Diese Modelle wurden mit Fortran geschrieben und werden als Exe zur Verfügung gestellt. Die Modelle ziehen sich eine große Menge an Informationen aus Textdateien. Im aktuellen Fall startet das Batch das Modell, kopiert ein Textfile, sucht nach bestimmten Zeilen, verändert dort die Werte, startet das Modell, beendet es, startet das Modell für den nächsten Berechnungszeitraum, fügt den Output zusammen und sortiert den Inhalt (ASCII und Binärdateien). Das ganze muss auf Geschwindigkeit optimiert sein. An meine Grenzen stoße ich mit Batches bei diesem Vorhaben ganz sicher noch lange nicht ... aber die Skriptsprache bereitet mir als Laie einfach Probleme

Danke für deine ausführliche Hilfe bislang :)

0

Man kann wirklich sehr viel nur mit Batch Dateien machen. Vorallem weil es mittlerweile seit Windows7 viele leistungsfähige Kommandozeilentools für alle möglichen administrativen Aufgaben gibt (net netsh ...). Für komplexe Abfragen kann man auch kleine VB Skripte einbinden.

Die Powershell ist nicht einfach nur ein verbessertes CMD - sie ist ein völlig neues Instrument - dafür ein sehr leistungsfähiges. Der Einstieg ist etwas schwierig, wegen der CMDlets. Aber wenn mans erst mal raus hat, kann man damit so gut wie alles machen.

Bash hat einen Nachteil: Du kannst es nur auf PCs ausführen, auf denen es auch installiert ist. CMD und Powershell dagegen sind immer mit dabei.

1

Was möchtest Du wissen?