PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Batch: Start-befehl wird nicht abgearbeitet...


ooAlbert
2007-06-04, 23:01:20
Hi,

ich hab eine batchdatei egschrieben um ein konsolenprogramm etwas besser bedienen zu können :) Das problem ist jedoch, das es zu keinem erfolg führt...

Hier mal der beispielcode:

@echo off

set /p Quelle=Eingabe Quelldateiname:
set /p Ziel=Eingabe Zieldateiname:
set /p Stempel=Eingabe Stempeldateiname:

start "C:\pdftk-1.12\pdftk" %Quelle% background %Stempel% output %Ziel%

pause


Die batch-datei liegt auf meinem desktop, falls das relevant ist.

Muß ich da noch was zusätzlich machen das das funktioniert oder wo liegt der fehler? wie kann man eigentlich Dateinamen eingeben die leerzeichen enthalten, oder geht das überhaupt nicht?

Sephiroth
2007-06-04, 23:14:05
Anführungszeichen weglassen, da das sonst der Titel des neuen Fenster ist.
start /?
Startet ein eigenes Fenster, um ein bestimmtes Programm oder einen Befehl
auszuführen.

START ["Titel"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME] | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [Befehl/Programm]
[Parameter]

"Titel" Der Titel des neuen Fensters.
Pfad Startverzeichnis.
B Startet Anwendung, ohne ein neues Fenster zu öffnen. Die
Anwendung ignoriert STRG+C. Wenn die Anwendung nicht selbständig
STRG+C überprüft, ist STRG+UNTBR die einzige Möglichkeit, um die
Anwendung abzubrechen.
I Die CMD.EXE beim Aufruf übergebene Umgebung soll die neue
aktuelle Umgebung sein.
MIN Startet das Fenster minimiert.
MAX Startet das Fenster maximiert.
SEPARATE Startet 16-Bit-Windows-Programm in separatem Speicherbereich.
SHARED Startet 16-Bit-Windows-Programm in gemeinsamen Speicherbereich.
LOW Startet Anwendung in IDLE-Prioritätsklasse.
NORMAL Startet Anwendung in der NORMAL-Prioritätsklasse.
HIGH Startet Anwendung in der HIGH-Prioritätsklasse.
REALTIME Startet Anwendung in der REALTIME-Prioritätsklasse.
ABOVENORMAL Startet Anwendung in der ABOVENORMAL-Prioritätsklasse.
BELOWNORMAL Startet Anwendung in der BELOWNORMAL-Prioritätsklasse.
WAIT Startet die Anwendung und wartet auf das Ende.
Befehl/Programm
Wenn ein interner Befehl oder eine Batchdatei verwendet wird,
wird das neue CMD-Fenster mit Parameter /K gestartet.
Das bedeutet, dass das Fenster erhalten bleibt, nachdem der
Befehl ausgeführt wurde.
Wenn dies nicht der Fall ist, wird das Programm entweder
als Anwendung in einem Fenster oder als Konsolenanwendung
gestartet.
Parameter Parameter, die an den Befehl oder das Programm übergeben werden
sollen.


Wenn die Befehlserweiterungen aktiviert sind, wird der Aufruf von externen
Befehlen durch die Befehlszeile oder den START-Befehl folgendermaßen verändert:

Nicht-ausführbare Dateien können durch ihre Zuordnung zu einem Dateityp
einfach durch Eingabe des Namens als Befehl aufgerufen werden (z.B. würde
WORD.DOC die Anwendung starten, die der .DOC-Erweiterung zugeordnet ist).
Weitere Informationen, wie Sie diese Zuordnungen innerhalb eines Befehls-
skripts ändern, finden Sie beim ASSOC- bzw. FTYPE-Befehl.

Wird eine grafische 32-Bit-Anwendung aufgerufen, wartet CMD.EXE nicht auf
das Beenden dieser Anwendung, sondern kehrt sofort zur Eingabeauforderung
zurück. Das gilt NICHT, wenn diese Anwendung aus einem Befehlsskript
heraus aufgerufen wird.

Wenn eine Befehlszeile ausgeführt wird, die mit den Zeichen CMD ohne
Erweiterung oder Pfadname beginnt, wird CMD durch den Wert der
COMSPEC-Variablen ersetzt. Damit wird vermieden, dass man versehentlich
eine andere, ggf. zufällige Version der CMD.EXE verwendet.

Wenn eine Befehlszeile ausgeführt wird, die mit Zeichen beginnt, die keine
Dateierweiterung enthalten, dann verwendet CMD.EXE den Wert der Umgebungs-
variablen PATHEXT, um zu bestimmen, welche Erweiterungen in welcher
Reihenfolge verwendet werden. Der Standardwert für die PATHEXT-Variable
ist:

.COM;.EXE;.BAT;.CMD

Dabei ist die Syntax dieselbe wie in der PATH-Variablen, das heißt, die
einzelnen Einträge werden durch Semikolon getrennt.

Wenn mit dem START-Befehl ein Programm bzw. Befehl aufgerufen wird und keine
entsprechende Dateierweiterung gefunden wird, aber der Name ohne Erweiterung
einem Verzeichnisnamen entspricht, wird der Explorer mit diesem Pfad
aufgerufen. Von der Befehlszeile ausgeführt entspricht das einem CD /D mit
diesem Pfad.

Ectoplasma
2007-06-05, 08:39:43
Sollte also so funktionieren:


start "Mein Fenstertitel" "C:\pdftk-1.12\pdftk" %Quelle% background %Stempel% output %Ziel%


D.h du kannst und solltest nach Möglichkeit sogar Anführungszeichen verwenden, damit das Ganze auch mit Leerzeichen funktioniert.

ooAlbert
2007-06-05, 16:40:18
das funktioniert so nicht, scheinbar muß man vorher den pfad umändern damit der im richtigen verzeichnis ist ...

ich hab es jetzt so:
c:
cd C:\pdftk-1.12\
start pdftk %Quelle% background %Stempel% output %Ziel%

Ectoplasma
2007-06-05, 19:48:22
das funktioniert so nicht, scheinbar muß man vorher den pfad umändern damit der im richtigen verzeichnis ist ...

ich hab es jetzt so:
c:
cd C:\pdftk-1.12\
start pdftk %Quelle% background %Stempel% output %Ziel%

Naja, manche Programme wollen halt in einem bestimmten Pfad laufen. Das kann man aber vorher nicht wissen.

Du kannst das Ganze noch etwas universeller formulieren, in dem du dieses schreibst:


pushd C:\pdftk-1.12\
start pdftk %Quelle% background %Stempel% output %Ziel%
popd


Das hat den riesen Vorteil, dass du mit der Kombination 'pushd/popd' wieder im Ausgangsverzeichnis landest und 'pushd' wechselt sogar das Laufwerk.

ooAlbert
2007-06-05, 23:40:49
super befehl :) hat prima geklappt ... wundert mich nur das man sowas in den üblichen dokumentationen zu batchdateien nicht findet.