Thread Windows: Shell Befehle senden und Ausgabe entgegennehmen (13 answers)
Opened by MarkusH at 2013-11-30 19:53

MarkusH
 2013-11-30 19:53
#172338 #172338
User since
2012-04-08
161 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte mit Perl unter Windows folgende Aufgabe realisieren:
1. Mit cd oder chdir in ein Verzeichnis wechseln
2. In diesem Verzeichnis eine Shell (sh) öffnen
3. Shell Befehle absetzen
4. Ausgabe der Shell entgegennehmen und in einem Skalar oder Array zur Weiterverarbeitung speichern.

Händisch sieht das wie folgt aus:
In dem gewählten Projektverzeichnis wird eine start.bat und eine read.sh kopiert. Die start.bat hat immer den gleichen Inhalt und startet lediglich das Shellscript read.sh.
start.bat:
Code: (dl )
SH read.sh

read.sh:
Code: (dl )
1
2
export LIB_ROOT="pfad_zur_library";
prt_wm -i cell.ce -r \* -o output.pqry -NP;


Hinweis:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
usage: prt_wm [[-i <directory>] [-o <outfile>] [-r <root>] [-e <entity>] [-ANSRdPglLkjJwpasKtT#*]]
i <wmdir> - the cell/component directory
o <outfile> - the printout destination
r <root> - name of a subtree to be printed
e <entity> - name of single entity to print
A - show all entities
N - nice printout
S - sorted printout
R - list prototypes
d - default details
P - prototype references
g - geometry
l - locations (rpy)
L - locations (orientation matrix)
k - general kinematic data
j - kinematic & joints data
J - detailed joints data
w - workpoints data
p - paths data
a - attributes
s - sons
K - key (for internal use)
t - S+d+k+l+p+w+j+a (test mode)
T - A+S+d+k+l+p+w+j+a (test mode)
# - d+g+k
* - d+g+l+k


Die Shell wird über das MKS-Toolkit bereitgestellt.

Ich habe heute den ganzenTag damit zugebracht, hier was auf die Beine zu stellen und vieles dazu gelesen.
system, exec, IPC::Open3 scheinen ungeeignet zu sein, bzw. unter Windows nicht zu funktionieren.

In Anlehnung an den Threadhabe ich folgendes ausgeführt.
D:\>perl -wle'system("sh.exe", "echo", "foo")'
echo: echo: not found

Alternativ habe ich die Möglichkeit, das Shellscript mit Perl zu erstellen, in einer Windows-Konsole die .bat auszuführen und die erstellten Ausgabedateien mit Perl weiter zu verarbeiten.

Oder kennt jemand eine Lösungsmöglichkeit?
$q =~ /(bb|[^b]{2})/

View full thread Windows: Shell Befehle senden und Ausgabe entgegennehmen