it-swarm.com.de

Wie konvertiere ich ein Bash-Shell-Skript in eine BAT-Datei?

Ich habe ein Bash-Shell-Skript auf meinem Mac, das ich für Benutzer auf PCs in eine .bat-Datei konvertieren muss (zumindest wurde mir dies mitgeteilt). Ich habe mich gefragt, wie ich am besten vorgehen kann oder ob jemand gute Referenzen kennt. Ich scheine Google nicht die richtige Frage zu stellen, um mich in die richtige Richtung zu lenken.

Insbesondere Dinge wie, wie würde ich ein tun ...

cd ~/Documents/DropFolder

(... wobei ~/dem Stammverzeichnis des Benutzerverzeichnisses entspricht, unabhängig vom Namen des Benutzers)?

Oder wenn Sie an Variablen und "do" -Anweisungen arbeiten ...

for i in *.xml
do
  Java -Xss650K -Xms128m -Xmx2048m -jar /Applications...
done

Und schließlich, Basisnamen identifizieren und verwenden ...

  cp -p `basename $i .xml`.xml ~/Documents/ReadyForServer/`basename $i .xml`/

Vielen Dank für jede Anleitung oder Vorschläge für andere Lösungen. LO

13
LOlliffe

Tatsächlich sind die Dinge, die Sie erwähnen, trivial, um sie in eine Windows-Batchdatei zu portieren. Obwohl Sie mit SicherheitWindows-Ports aller Unix-Tools verwenden können (oder sogar eine Emulationsebene verwenden, um noch mehr Spaß zu haben), ist dies nicht schwer:

  1. ~ für den Home-Ordner des Benutzers

    Das Benutzerprofil befindet sich in der Umgebungsvariablen %USERPROFILE%, daher sollte dies folgendermaßen erfolgen:

    cd %USERPROFILE%\Documents\DropFolder
    
  2. Durchlaufen einer Reihe von Dateien

    Der Befehl for ist hier hilfreich:

    for %%i in (*.xml) do -Xss650K -Xms128m -Xmx2048m -jar ... %%i
    

    Natürlich müssen Sie den Pfad zur JAR-Datei anpassen.

    Und for hat darüber hinaus noch viele weitere Verwendungsmöglichkeiten. Schauen Sie sich also auch help for an.

  3. basename

    Sie müssen dies entweder in einer Unterroutine oder in einer for-Schleife tun, da die folgende Syntax für Schleifenvariablen oder -parameter spezifisch ist. Es funktioniert nicht mit Umgebungsvariablen wie sie sind. Sie können ermitteln, welche basename Sie erhalten, indem Sie %%~ni verwenden, wobei %%i, wenn die Schleifenvariable oder %~n1, wenn %1 das Argument für eine Subroutine oder Batch-Datei ist, die Sie haben. Das Folgende würde also wahrscheinlich dasselbe tun:

    copy "%%~ni.xml" "%USERPROFILE%\Documents\ReadyForServer\%%~ni\"
    

    In der Hilfe zu for finden Sie gegen Ende weitere Informationen zu diesen Dingen.

13
Joey

Die Windows-Shell ist eine andere Skriptsprache als die Bash-Shell. Sie müssen es portieren. Alternativ können Sie auch so etwas wie cygwin oder mingw verwenden, um die Bash-Shell unter Windows auszuführen.

4
Maz

Sie können auch Git für Windows verwenden, das bereits über eine integrierte Bash-Shell (GitBash) verfügt.

3
scottyp

Die F1-Hilfe unter Windows ist überraschend nützlich, wenn Sie Batch-Dateien im DOS-Stil schreiben. Drücken Sie auf dem Windows-Desktop F1 und suchen Sie nach Stapel. Der Link zum Verwenden von Batch-Parametern ist ziemlich hilfreich, um mit DOS ungewöhnliche Tricks zu machen. Die Seite "Verwenden von Stapeldateien" ist ebenfalls recht gut. Wie andere Poster bereits erwähnen, ist es besser, Batch als Implementierungssprache zu vermeiden, aber wenn Sie müssen, müssen Sie.

1
tonyj

Sie sollten von Hand konvertieren. Lernen Sie Stapelbefehle und führen Sie dann die entsprechenden Schritte aus. Alternativ können Sie GNU win32 unix tools verwenden.

1
ghostdog74

Schauen Sie sich Powershell an. Diese Seite hat viele Beispiele:

http://technet.Microsoft.com/en-us/scriptcenter/powershell.aspx

0
buckbova