You are not logged in.

wcf.regNote.message

Eastermeyer

Beginner

  • "Eastermeyer" started this thread

Posts: 2

  • Send private message

1

Friday, March 3rd 2006, 4:52pm

Commandline Wrapper

Hallo!

Ich bin neu im Forum und hoffe im richtigen Bereich zu sein.

Ich arbeite oft per Command Line mit den verschiedensten Programmen.
Es ist in letzter Zeit häufig vorgekommen , das ich ein Programm benötigte , welches folgendes macht:

Das Programm selbst bekommt CLI-Switches in einer bestimmten Form , z.B.

Source code

1
proggi.exe -vorname Martin -alter 99 -name Test

Dann müsste das Programm die Werte sortieren und an ein anderes Programm weiterleiten , z.B.

Source code

1
contacts.exe -fname "Martin" -n "test" -ag "99"


Mit welcher Script-Sprache ist es am einfachsten möglich einen solchen "Command Line Wrapper" zu schreiben.

Ich habe gehört , soetwas ist sogar schon mit BAT-Scripten möglich.
Stimmt das ?

Wo finde ich Anleitungen dazu ?

Tec

Beginner

Posts: 45

Location: München

Occupation: Diplom-Informatiker (FH)

  • Send private message

2

Friday, March 3rd 2006, 8:05pm

Würde das mit Perl lösen. Du könntest unter Windows es auch mit VBScript probieren, mit der Sprache kann man auch ziemlich viel anstellen.
Meine Freeware Webseite * klick *

Ich programmiere auch für Sie!

Eastermeyer

Beginner

  • "Eastermeyer" started this thread

Posts: 2

  • Send private message

3

Saturday, March 4th 2006, 5:04pm

Kannst du mal bitte ein Beispiel posten (Perl) ?

amoxys

Beginner

Posts: 8

  • Send private message

4

Sunday, March 5th 2006, 1:13am

Ich mach mal ein Beispiel für Batch:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
set vorname=
set alter=
set name=

:anfang
if "%1"=="" goto ende
if "%1"=="-vorname" set vorname=-fname %2
if "%1"=="-alter" set alter=-ag %2
if "%1"=="-name" set name=-n %2
shift
goto anfang

:ende
contacts.exe %vorname% %name% %alter%
Die Befehle dafür findet man bei Google, wenn man z.B. nach batch befehle sucht.

Mit VBScript müsste das wohl so gehen:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
For i = Wscript.Arguments.Count-2 To 0 Step -1
   Select Case LCase(Wscript.Arguments(i))
      Case "-vorname"
         vorname = "-fname " & Wscript.Arguments(i+1)
         i = i-1
      Case "-alter"
         alter = "-ag " & Wscript.Arguments(i+1)
         i = i-1
      Case "-name"
         name = "-n " & Wscript.Arguments(i+1)
         i = i-1
   End Select
Next

Set shell = CreateObject("WScript.Shell")
shell.run "contacts.exe " & vorname & " " & name & " " & alter
mfg
amoxys

This post has been edited 6 times, last edit by "amoxys" (Mar 5th 2006, 1:49am)


Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

5

Wednesday, March 8th 2006, 9:13am

@amoxys:
Coole Idee mit dem shift bei nem Batch die Params durchzugehen :) ...
Kannte ich noch nicht.

@Eastermeyer:
Ich würde des Batch Script von Amoxys nehmen. Des is dann total leight weight und du musst die Scriptengine von Windows nicht einschalten.

Aber da du nach Perl gefragt hast hier ein Beispiel:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use strict;

my  $fname = "";
my  $age = "";
my  $lname = "";

ANFANG:
if ($#ARGV <= 0) { goto ENDE; }
if ($ARGV[0] eq "-vorname") { $fname = "-fname ".$ARGV[1]; }
if ($ARGV[0] eq "-alter") { $age = "-ag ".$ARGV[1]; }
if ($ARGV[0] eq "-name") { $lname = "-n ".$ARGV[1]; }
shift;
goto ANFANG;

ENDE:
print "Executing 'contacts.exe $fname $lname $age'.\n";
system("contacts.exe $fname $lname $age");


Ciao Ephraim

amoxys

Beginner

Posts: 8

  • Send private message

6

Sunday, October 8th 2006, 11:34pm

Quoted

Original von Ephraim
@amoxys:
Coole Idee mit dem shift bei nem Batch die Params durchzugehen :) ...
Kannte ich noch nicht.


Danke. Iich kannte das auch nicht. :)
Ich hab keine keine Ahnung von Batches. Also hab ich mir wie üblich zuerstmal alle Befehle in dem Zusammenhang angesehen.
mfg
amoxys

wcf.user.socialbookmarks.titel