Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Syntax für Batch Datei mit Call Befehl gesucht

Frage Entwicklung Batch & Shell

Mitglied: TAGTAG

TAGTAG (Level 1) - Jetzt verbinden

05.03.2013 um 00:00 Uhr, 3544 Aufrufe, 19 Kommentare

Hallo werte Admins, ich hoffe mit Eurer Hilfe folgendes Problem mit einer Batch-Datei lösen zu können.

Ich möchte gern eine Batch-Datei durch eine andere Batch-Datei ausführen bzw. starten. Leider konnte ich trotz Google und viel Zeitaufwand nichts Brauchbares zustande bringen, da ich auf diesem Gebiet leider auch nicht viel Ahnung habe. Nun hoffe ich hier Hilfe zu finden. Folgende Problemstellung:

Auf einem USB-Stick befindet sich ein Ordner. In diesem wiederum eine Datei mit Namen "start.bat". Diese würde ich gern durch eine weitere Batch-Datei starten bzw. ausführen wollen, welche außerhalb dieses Ordners, quasi im Stammverzeichnis des Sticks liegt. Ich habe es mit der folgenden Syntax probiert, welche ich mir sozusagen zusammengegoogelt habe. Aber leider funktioniert diese nicht und ich habe keine Ahnung warum.

call \Ornername\start.bat

Ich hoffe, dass Ihr mir den Fehler in der Syntax oder andere Lösungsansätze aufzeigen könnt. Erwähnenswert ist evtl. noch, dass der Stick an ständig wechselnden Rechnern genutzt werden soll und daduch auch der Laufwerksbuchstabe des Sticks immer anders sein kann.

Für Hilfe vielen Dank im Voraus!

TAGTAG
Mitglied: hmarkus
05.03.2013, aktualisiert um 00:14 Uhr
Hallo,

die Umgebungsvariable für "Current Directory" in Windows ist %cd%. Das ist wichtig, damit Du unabhängig vom Laufwerksbuchstaben bist (der sich ja für USB-Sticks ändern kann bzw. von Computer zu Computer verschieden ist). Also sollte
%cd%\Ordnername\start.bat
die Batchdatei ausführen. Das kannst Du so in eine Batch-Datei schreiben, welche im Stammverzeichnis des Sticks liegt.

Markus
Bitte warten ..
Mitglied: bastla
05.03.2013 um 00:19 Uhr
@ hmarkus
Da aber %cd% nur das ohnehin aktuelle Verzeichnis angibt, tut's auch einfach
Ordnername\start.bat
Grüße
bastla
Bitte warten ..
Mitglied: hmarkus
05.03.2013 um 00:20 Uhr
Zitat von bastla:
@ hmarkus
Da aber %cd% nur das ohnehin aktuelle Verzeichnis angibt, tut's auch einfach
Ordnername\start.bat 
> 
Grüße
bastla
Da hab ich wohl zu weit gedacht
Danke für die Korrektur.

Markus
Bitte warten ..
Mitglied: rubberman
05.03.2013, aktualisiert um 00:25 Uhr
Hallo Zusammen.

Relative Pfadangaben sind schon möglich. Genau genommen funktioniert die Syntax genau so bei mir im Test (auch wenn der führende Backslash nicht einmal nötig ist, wenn du dich im Rootverzeichnis befindest).

Die Ursache dafür, dass es trotzdem fehlschlägt ist also woanders zu suchen:
  • der Pfad enthält Leerzeichen
  • der Pfad enthält Sonderzeichen (wie zB. &)
  • der Pfad enthält Umlaute oder ß
  • die Batchdatei wurde "Als Administrator" ausgeführt und das Arbeitsverzeichnis ist somit automatisch %systemroot%\system32

Magst du etwas konkretisieren bzw. trifft irgend etwas davon zu?

Grüße
rubberman
Bitte warten ..
Mitglied: TAGTAG
05.03.2013 um 09:45 Uhr
Hallo und vielen Dank für die schnellen Antworten! Ich habe so das Gefühl hier wird mir endlich geholfen. Aber folgende Fragen stellen sich mir bei den oben genannten Syntax:

%cd%\Ordnername\start.bat

bzw.

Ordnername\start.bat

Fehlt da nicht noch davor ein Befehl wie "start" (für .exe Dateien) bzw. "call" (für .bat Dateien)? Aber leider funktionieren beide Varianten trotzdem nicht bei mir.
Damit käme ich zu "rubberman"s Ursachen für die Disfunktion. Die ersten 3 Punkte kann ich nach Kontrolle ausschließen. Aber gern könnt auch Ihr Euch mal "meiner" Syntax annehmen, welche ich nachfolgend mal direkt aus meiner (nicht funktionierenden) Batch kopiert habe um Tippfehler zu vermeiden.

call \Tresor\start.bat

Mit dieser Batch Datei (liegt im Stammverzeichnis) möchte ich gern die Batch Datei "start.bat" starten, welche im Ordner "Tresor" liegt und die nachfolgende (funktionstüchtige) Syntax enthält.

TrueCrypt.exe /ly /q /a /c n /m rm /v /e GEHEIM
action=Mount TrueCrypt Volume

Habe es auch ohne den call Befehl probiert - leider ohne Erfolg. Zwar poppt für Millisekunden ein schwarzes DOS Fenster auf, aber die zu startende (funktionierende) Batch (start.bat) wird nicht oder ohne Erfolg (?) ausgeführt.

Falls der letzte Fehlerpunkt von "rubberman" zutrifft und ich die Batch als Admin gestartet habe (arbeite mit Admin Benutzerkonto) bzw. starten möchte, was müsste denn dann geändert werden?
Bitte immer unter der Prämisse des wechselnden Laufwerksbuchstaben und wechselnder Rechner (Betriebssysteme wie WinXP, Vista, 7), an welche der Stick gesteckt werden soll.

Freue mich auf weitere Antworten und vielen Dank im Voraus!

TAGTAG
Bitte warten ..
Mitglied: 106543
05.03.2013 um 09:57 Uhr
Hallo,

setz doch mal ein
01.
echo "Die Batch wird ausgeführt!"
vor deinen TrueCrypt-Befehl
und am Ende der Batch ein
01.
pause
dann solltest du auch sehn, was in der anderen DOS_Box passiert
btw. müsste doch glaub ich
01.
start TrueCrypt.exe ...
heißen oder ?

Mit allerfreundlichsten Grüßen
Exzellius
Bitte warten ..
Mitglied: TAGTAG
05.03.2013 um 10:33 Uhr
Hallo Exzellius, danke für Deine Antwort. Also in der zu startenden Batch steht vor dem "TrueCrypt" kein "start", aber bei direktem Doppelklick funktioniert sie ohne Probleme.

Habe Deinen Rat befolgt und habe "echo ..." und "pause" eingefügt. Nun erhielt ich nach dem Startversuch über die andere Batch folgende Ausgabe in der DOS-Box:

Der Befehl "TrueCrypt.exe" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
O:\>action=Mount TrueCrypt Volume
Der Befehl "action" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

Nun wundert es mich, das diese zu startende Batch bei Ausführung mit Doppelklick (also direkt) geht, aber bei Start durch die andere Batch nicht funktioniert (s. Fehler).???

Hoffe auf weitere Tips und danke im Voraus!

TAGTAG
Bitte warten ..
Mitglied: 106543
05.03.2013 um 10:42 Uhr
Hallo,

dachte ich mir schon, dass die Batch aufgerufen wird aber nichts bei rauskommt
es ist etwas anderes, wenn du eine Batch per Doppelklick aufführst, oder in einer anderen Batch aufrufst :
ich kenne mich persönlich mit TrueCrypt nicht aus, allerdings setze doch bitte mal das so um:
01.
start "" TrueCrypt.exe /ly /q /a /c n /m rm /v /e GEHEIM 
02.
action=Mount TrueCrypt Volume
ich gehe hierbei davon aus, dass der TrueCrypt-Befehl soweit richtig ist, weil ich mich wie gesagt damit leider garnicht auskenne

Grüße
Exzellius
Bitte warten ..
Mitglied: TAGTAG
05.03.2013 um 12:29 Uhr
Die erste Zeile funktioniert nun, nachdem ich hinter "" noch den Pfad wie folgt angegeben habe:

start "" \Tresor\TrueCrypt.exe ...

leider hakt es nun scheinbar an der 2. Zeile, da kommt die Fehlermeldung, dass das Volume nicht gefunden werden kann in einem Windows-Fenster. Muss ich eventuell den Ordner/Pfad in welchem das Volume liegt nun auch als:

action=Mount \Tresor\TrueCrypt Volume

angeben, wobei Tresor der Orndername ist?

Viele Grüße
TAGTAG
Bitte warten ..
Mitglied: 106543
05.03.2013 um 12:40 Uhr
Hi,

gut dass das nun schonmal funktioniert, allerdings kann ich dir bei TrueCrypt nicht weiterhelfen
was allerdings sein könnte (reine Spekulation) ist, dass es "TrueCrypt Volume" heißen muss -> Anführungszeichen

Grüße
Exzellius
Bitte warten ..
Mitglied: TAGTAG
05.03.2013 um 13:00 Uhr
klappt leider nicht
Kann die folgende Batch-Datei nur direkt (mit Doppelkick) korrekt ausführen.

TrueCrypt.exe /ly /q /a /c n /m rm /v /e GEHEIM
action=Mount TrueCrypt Volume

Leider muss diese dabei direkt im Ordner mit der TrueCrypt Datei sein. Da mir das so nicht gefällt, wollte ich sie ja auch vom Stammverzeichnis aus mit einer anderen Batch zum laufen animieren.

Hab es nun mal aus Verzweiflung mit einer einfachen Verknüpfung probiert. Das komische dabei ist nur, auf einem Stick funktioniert es trotz wechselnder Laufwerksbuchstaben, beim anderen Stick nicht.

Langsam bin ich echt am verzweifeln. Gibt es ggf. noch Lösungsansätze zum Start einer Batch (in einem Ordner) vom Stammverzeichnis des USB-Sticks aus? Bitte sehr um weitere Hilfe! Danke im Vorraus!

Mit freundlichen Grüßen TAGTAG
Bitte warten ..
Mitglied: 106543
05.03.2013 um 13:06 Uhr
Hallo,

ist ja klar, dass es nicht funktionieren kann, weil das Script welches im Root-Verzeichnis des Sticks liegt dann sucht er auch im Root-Verzeichnis des Sticks nach TrueCrypt.exe.
Mit "\Tresor\TrueCrypt.exe" findet er die .exe
Ich weiß nur die Syntax des "action"-Befehls nicht :D das ist mein Problem.
ist TrueCrypt Volume eine Datei, die in \Tresor liegt, dann versuche \Tresor\TrueCrypt Volume

Grüße
Exzellius
Bitte warten ..
Mitglied: TAGTAG
05.03.2013 um 13:19 Uhr
Hab ich bereits ohne Erfolg versucht. Allerdings heißt dieses Volume "GEHEIM". Aber die Ausführung funktioniert ja trotzdem, allerdings nur bei direktem Start (Doppelklick) und aus dem Ordner heraus.
Bitte warten ..
Mitglied: 106543
05.03.2013 um 13:45 Uhr
Hi,

entschuldige aber ich hab leider keine Ahnung wie TrueCrypt funktioniert
da wird dir jemand anders helfen müssen.
Vielleicht @bastla

Mit freundlichen Grüßen
Exzellius
Bitte warten ..
Mitglied: rubberman
05.03.2013, aktualisiert um 19:15 Uhr
Hallo Zusammen.

So ungewöhnlich ist das alles gar nicht.
Testumgebung:
D: 
 |- testverzeichnis 
 |    | 
 |    |- test2.bat 
 |- test1.bat
test1.bat
01.
@echo off &setlocal 
02.
call "testverzeichnis\test2.bat"
test2.bat
01.
@echo off &setlocal 
02.
echo ********** 
03.
echo Ich bin "%~f0". 
04.
echo Ich arbeite in "%cd%" 
05.
echo ********** 
06.
pause
Ich starte "test2.bat" direkt. Ausgabe:
********** 
Ich bin "D:\testverzeichnis\test2.bat". 
Ich arbeite in "D:\testverzeichnis" 
********** 
Drücken Sie eine beliebige Taste . . .
Ich starte "test1.bat" und rufe mit ihr "test2.bat" auf. Ausgabe:
********** 
Ich bin "D:\testverzeichnis\test2.bat". 
Ich arbeite in "D:\" 
********** 
Drücken Sie eine beliebige Taste . . .
Und nun ist schon klar dass das Arbeitsverzeichnis aus "test1.bat" übernommen wird.

Abhilfe schafft bspw die Änderung von "test2.bat" wie folgt:
01.
@echo off &setlocal 
02.
 
03.
pushd "%~dp0" 
04.
 
05.
echo ********** 
06.
echo Ich bin "%~f0". 
07.
echo Ich arbeite in "%cd%" 
08.
echo ********** 
09.
 
10.
popd 
11.
 
12.
pause
truecrypt.exe aber ohne START Befehl ausführen, da der Prozess sonst asynchron läuft.

Grüße
rubberman
Bitte warten ..
Mitglied: TAGTAG
05.03.2013 um 21:11 Uhr
Erst einmal vielen Dank für die große Mühe!!! Das ist für einen Anfänger wie mich erst mal ein bißchen viel input, ich werde es mir auf jeden Fall mal genau ansehen und versuchen mitzudenken
Habe das Problem erst mal anders gelöst. Die Bactch im Ordner starte ich nun nicht durch eine andere Batch im Stammverzeichnis, sondern habe sie einfach in exe-Dateien konvertiert, welche ich mit einem Start-Menü-Tool namens PStart starten kann. Trotzdem noch mal vielen Dank an alle! Ein tolles Forum!

Viele Grüße

TAGTAG
Bitte warten ..
Mitglied: rubberman
05.03.2013 um 22:09 Uhr
Hallo TAGTAG,

Das ist für einen Anfänger wie mich erst mal ein bißchen viel input
Naja, eigentlich dachte ich, dass es genau so am einfachsten zu verstehen und nachzuvollziehen ist.
Die Kurzfassung:
Relative Pfadangaben beziehen sich auf das Arbeitsverzeichnis. Wenn du das Batchfile per Doppelklick startest, ist das Arbeitsverzeichnis gleich dem Verzeichnis in dem die Batchdatei liegt. Rufst du statt dessen aus einem anderen Batch auf, ist das Arbeitsverzeichnis das des aufrufenden Batchfiles. Das ist der Grund warum truecrypt.exe nicht gefunden wurde und sicherlich der Grund, warum auch das Verzeichnis GEHEIM nicht gefunden wurde (liegt bei dir auch im Verzeichnis Tresor nehme ich an). %~dp0 enthält Laufwerk und Pfad des gerade laufenden Batchfiles. PUSHD wechselt das Arbeitsverzeichnis, mit POPD wechselst du wieder zurück.

sondern habe sie einfach in exe-Dateien konvertiert
Brrr - Da sträuben sich mir die Nackenhaare!

Grüße
rubberman
Bitte warten ..
Mitglied: 106543
06.03.2013 um 15:48 Uhr
Hi,

nicht nur dir ...
aber wenn TAGTAG damit zufrieden ist, dann möchte ich dich bitte darum bitten, dass du den Beitrag auf gelöst setzt.

Mit freundlichen Grüßen
Exzellius
Bitte warten ..
Mitglied: TAGTAG
06.03.2013 um 16:08 Uhr
Hallo und danke noch mal für Eure Mühe. Weiß zwar nicht was nach Eurer Meinung gegen eine .exe spricht, aber da hat sicher jeder seine Ansichten. Mit dem genannten Menü-Tool lassen sich im übrigen auch die Batch-Dateien in das Menü einbinden und starten. Läuft problemlos. Den Beitrag von rubberman habe ich mir noch mal genauer angesehen und glaube, das ich auch diese Variante jetzt "begriffen" habe. Werde sicher in Zukunft noch ein bißchen mehr in die Welt der Batch-"Programmierung" einsteigen, ist intressant. Also noch mal Dank an alle! Problem gelöst!
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...