Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Batch & Shell

GELÖST

Herausfinden, ob Batch aus der CMD gestartet wurde, oder über Windows

Mitglied: Ren

Ren (Level 1) - Jetzt verbinden

14.11.2008, aktualisiert 18.11.2008, 7365 Aufrufe, 12 Kommentare

Hm, mir fiel kein geschickterer Titel ein, und so hat mir die Suchfunktion nicht geholfen.
Mein Problem ist eigentlich super einfach: Wenn meine Batch aus der CMD.EXE heraus gestartet wird, dann sehe ich meine Ausgaben, und alles ist super. Wenn ich einen Verknüpfung auf dem Desktop nutze, dann schließt sich aber das Fester immer gleich, und ich sehe meine Ausgabe nicht. Gibt es einen Möglichkeit, wie ich herausfinden kann, ob die Batch manuell gestartet wurde oder über einen verknüpfung, so dass ich im 2. Fall eine pause ans Ende setzen kann?
Mitglied: 60730
14.11.2008 um 14:53 Uhr
Servus,

anstatt uns hier im trüben fischen zu lassen und einen "Workraround" zu zimmern...

Würde ich dir vorschlagen, poste die Batch dann "sieht" man eher, warum die nicht läuft, wenn Sie per Verknüpfung gestartet wird.

Aber da ich ein trüber Fischer bin, tippe ich darauf, daß entweder kein cd\ordner wo meine Batch arbeiten soll oder das Arbeitsverzeichnis im Link nicht "stimmt"


Gruß
Bitte warten ..
Mitglied: Ren
14.11.2008 um 15:01 Uhr
die batch funktioniert gut. Das ist nicht das Problem. Nur sehe ich die Ausgabe ja nicht, wenn das Fenster wieder zu geht. Ich habe also in die letzte Zeile eine pause geschrieben, so dass ich alles sehen kann. Nur rufe ich die Batch auch von der CMD manuell auf, und dann regt mich die pause am ende auf. Ich will also sowas
01.
@echo off 
02.
::tu was tolles 
03.
echo Ergebnis meiner Arbeit 
04.
goto :ende 
05.
:ende 
06.
if "gestarte von Verknüpfung" pause
Ich hoffe, das kann man verstehen.
Bitte warten ..
Mitglied: 60730
14.11.2008 um 15:16 Uhr
Servus again...

sorry - aber SO will ich dir nicht helfen...
Wie "eine" Batch" aussehen muß - weiß ich - wie deine - die nicht läuft wenn..
..weiß ich nicht und interessiert mich nach dieser Antwort auch nicht mehr.
Ps:

goto :ende
kannst du knicken - richtig heißt das
goto ende
ohne :
Ich hoffe, das kann man verstehen.

Bei aller liebe nein.
Bitte warten ..
Mitglied: Biber
14.11.2008 um 15:22 Uhr
Moin Ren,

natürlich geht das.
du kannst es über die dynamische Umgebungs-Variable %CmdCmdLine% prüfen.
[Nein, ich stottere nicht, die heißt wirklich so.]

Mach folgenden Test am CMD-Prompt in einem Verzeichnis Deiner Wahl:
[Zeile eingeben und mit ENTER abschicken]
echo @echo Variablenwert ist [^%cmdcmdline^%] ^& pause>testFromWhere.bat
Damit hast Du einen Einzeiler, den Du bitte 1x via offenem CMD-Fenster und 1x via Explorer-Doppelklick aufrufst.

Ergebnis 1 via CMD-Fenster:
01.
>testfromwhere 
02.
Variablenwert ist [C:\WINDOWS\system32\cmd.exe ] 
03.
Drücken Sie eine beliebige Taste . . .
Ergebnis 2 (Aufruf via Explorer-Doppelklick; Standard *.bat-Handling laut HKCR)
01.
Variablenwert ist [cmd /c D:\temp\testFromWhere.bat ] 
02.
Drücken Sie eine beliebige Taste . . .
--> kannst also prüfen, ob die ersten 6 Zeichen von %cmdcmdline% ="cmd /c" bzw. dem vorgeschriebenen Umgang mit Dateien mit Endung .bat/.cmd entsprechen.

Grüße
Biber
Bitte warten ..
Mitglied: Ren
14.11.2008 um 15:30 Uhr
tut mir leid, dass dir mein Stiel beim skripten eine Batch nicht gefällt. Tut mir auch leid, dass du dich angegriffen fühlst, scheint mir jedenfalls. Aber Kopf hoch, es ist Freitag!
Bitte warten ..
Mitglied: Ren
14.11.2008 um 15:42 Uhr
Super, geht wie immer! Wenn ich dieses Forum nicht hätte.
01.
if "%cmdcmdline:~0,6%"=="cmd /c" pause
Bitte warten ..
Mitglied: DerTiger
17.11.2008 um 12:12 Uhr
hi,

ich hab mal die zeile ausprobiert und bei mir kommt immer

01.
if "%cmdcmdline:~0,6%"=="cmd /c" pause 
02.
"/c" pause" ist syntaktisch an dieser Stelle nicht verarbeitbar.
was ist zu tun?
Bitte warten ..
Mitglied: Biber
18.11.2008 um 12:00 Uhr
Moin DerTiger,

ist ein bissi schwierig, dieses Problem zu lokalisieren, ohne den Wert Deiner %CMDCMDLINE% zu kennen.
Bei meinen Trockentests eben kann ich es nur nachstellen, wenn der Inhalt von %CmdCmdline% mit einem Anführungszeichen beginnt.
Bsp: [%CmdCmdline%]=["C:\Dokumente und Einstellungen\Bla.xyz"]

In diesem Fall (falls das die gegebene Ursache ist!) wäre ein Zwischenschritt im Batch nötig:
01.
... 
02.
:: Rem evtl umschließende Anführungszeichen entfernen 
03.
FOR /F "delims=" %%i in ("%cmdcmdline%") do set "ccline=%%~i" 
04.
IF "%ccline:~0,6%" =="cmd /c" echo Aufruf via Cmd /c 
05.
...
Mach bitte mal, wenn der Fehler bei Dir auftritt, ein "Echo %cmdcmdline%" am CMD-Prompt (oder in der aufgerufenen Batchdatei), bevor wir hier weiter rumraten.

Grüße
Biber
Bitte warten ..
Mitglied: pieh-ejdsch
12.08.2009 um 20:25 Uhr
Hi,

@Biber das müsste eigentlich genügen gleich das Erste Zeichen beim %cmdcmdline% anzeigen wegzulassen. Aber ich komme gleich weiter unten nochmal darauf zurück ...
...auf die DynamischeVariable %cmdcmdline%

Hier das ganze nochmal als eine Zeile - ist zum "ersetzten mit" oder "hinzufügen zu" der Zeile die für den Abschluss der CMD sorgt.

Somit kommt die Nervende Pause zum Ende der Batch nicht auf der CommandLine zum vorschein.

01.
::Vor beenden der Batch bei direktaufruf "Ausführen" oder im Explorer Automatische Pause - schnipsel 
02.
if "%cmdcmdline:~ 1, 5%" == "md /c" (pause & goto :eof ) else goto :eof
wenn diese Aufgerufene Batch von einer Aufrufenden Batch per CALL (oder Nur) Aufgerufen wird (ohne START) - wird die Pause trotzdem ausgeführt und die Aufrufende Batch bekommt von alledem nichts mit.

Um dies zu umgehen kann eine ErstellteVariableVorDemCALL aus der Aufrufenden Batch dazu benutzt werden den Pause Befehl wieder zu deaktivieren, damit die Aufrufende Batch weiterläuft.

01.
if "%cmdcmdline:~ 1, 5%" == "md /c" (if defined ErstellteVariableVorDemCall (goto :eof ) else pause & goto :eof ) else goto :eof
Diese ErstellteVariableVorDemCALL darf dann aber in der Aufgerufenen Batch NICHT Erstellt und NICHT Gelöscht werden. Auf die Veränderung der ErstellteVariableVorDemCALL in der Aufgerufenen Batch sollte verzichtet werden. Diese ErstellteVariableVorDemCALL muss nicht extra erstellt werden, wenn diese schon vor dem Aufruf existent ist.

und nun zurück zur Variable %cmdcmdline%
diese Variable wird beim Erweitern selbst Verändert und zwar zur ErweitertenVariable.
das macht zwar nichts wenn ich die Batch einmalig aufgerufen wird, weil die Variable für eine AktivesCMDFenster zu Beginn neu Erstellt wird ....but
möchte ich nun zweimal CALL von der Aufrufenden Batch ist der zweite Wert von der Variable %cmdcmdline% nicht mehr wie der erste Wert. wenn ich noch dazu in der Aufgerufenen Batch eine Pause durch das nichtsetzen von ErstellteVariableVorDemCall möchte fast das in die Grütze.
wenn ich jedoch die Variable %cmdcmdline% noch Anderweitig (zB. in der Aufrufenden Batch) benötige, stehe ich auch auf dem trockenem, also komme ich besser die Variable %cmdcmdline% in eine Andere Variable zu speichern und die Variable %cmdcmdline% dabei nicht zu verändern. Ein set "cmdcmdline=" bringt mir die OriginaleDynamik wie bei
set "date=" oder set "time=" nicht wieder zurück. ist warscheinlich eine Ausnahme bei %cmdcmdline%

demnach lautet die Optimierte Doppel-Zeile für die Automatische Pause je nach Aufruf und zusätzlicher exklusiv Pause auch aus einer anderen Batch
01.
set "linecmdline=%cmdcmdline%" 
02.
if "%linecmdline:~ 1, 5%" == "md /c" (if defined ErstellteVariableVorDemCall (goto :eof ) else pause & goto :eof ) else goto :eof
Gruß Phil
Bitte warten ..
Mitglied: bastla
13.08.2009 um 20:44 Uhr
@PH
Ich hätte wohl eine Dreifach-Zeile daraus gemacht:
01.
set "linecmdline=%cmdcmdline%" 
02.
if "%linecmdline:~1,5%" == "md /c" if not defined ErstellteVariableVorDemCall pause 
03.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
15.08.2009 um 05:25 Uhr
ja bastla das ist natürlich besser...
weil von der Menge kürzer und läuft dazu auch noch schneller.

mir fehlt manchmal die Ecke zum drumherumdenken ... hast Du noch eine Übrig?

Gruß Phil
Bitte warten ..
Mitglied: bastla
15.08.2009 um 07:44 Uhr
@PH
mir fehlt manchmal die Ecke zum drumherumdenken ... hast Du noch eine Übrig?
Sorry - Ecken wirst Du an mir nicht finden ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Windows Server
Dienst wurde nicht richtig gestartet
Frage von manuelwWindows Server2 Kommentare

Hallo! Seit einiger Zeit sehe ich im Event Log eine Fehlermeldung mit dem Inhalt:" Der Dienst "Sophos MCS Client" ...

Windows Systemdateien
CMD wird nicht wie gewohnt von c:users-username gestartet
gelöst Frage von WinLiCLIWindows Systemdateien4 Kommentare

Hallo zusammen, weis einer wie ich das Problem gelöst bekomme, dass wenn ich die CMD über das Startmenü rufe, ...

Batch & Shell
Batch soll überprüfen, ob Windows-Explorer gestartet ist
gelöst Frage von kaeptenbleiBatch & Shell6 Kommentare

Hallo zusammen, ich würde gerne in einer Batch überprüfen, ob der Windows-Explorer (Dateimanager) gestartet ist (unter Win7prof. x64). Super ...

Batch & Shell
Windows 7 Batch (CMD) für alle Benutzer
Frage von WaldimanBatch & Shell10 Kommentare

Hallo habe folgendes Problem. Ich habe 2 CMD Scripte, die bei Bedarf den "MYSQL-Dienst" starten oder stoppen (script 1 ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 22 StundenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit26 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Windows 10
Automatische daten kopieren, USB zu USB unter Win10 im Hintergrund
Frage von DerEisigeWindows 1016 Kommentare

Hallo Leute, ich bin auf der Suche nach einem Skript, dass von einem USB Stick automatisch nach dem einstecken ...

SAN, NAS, DAS
Hilfe beim Einrichten eines Storages (SAN)
gelöst Frage von Vader666SAN, NAS, DAS15 Kommentare

Hallo Admins! Ich bin in einer kleineren Firma und hatte bisher mit dem Thema SAN nur in meiner Ausbildung ...