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
GELÖST

Batch Kommandozeilenparameter als START Pfad mit Leerzeichen

Frage Entwicklung Batch & Shell

Mitglied: WiSch

WiSch (Level 1) - Jetzt verbinden

19.05.2009, aktualisiert 15:42 Uhr, 12907 Aufrufe, 6 Kommentare

Hallo,
habe gesucht und nicht gefunden.

Was passieren soll:
Ich möchte meine CMD mit zwei Parametern aufrufen.
Dann wird geprüft ob das Programm schon läuft, wenn nicht soll es gestartet werden.
Das funktioniert (auch dank pslist) solange, bis der Programmpfad Leerzeichen enthält.

Das hier hat nicht geklappt, ich
bekomme trotzdem eine Fehlermeldung "Pfad nicht gültig"...

Hier mein aktueller Code mit Bitte um Hilfe, danke.
@echo off  
 
REM Prameter von der Kommandozeile holen 
set Suchname=%1  
set Programm=%2 
 
REM Fehlt ein Parameter dann Ende 
if "%1"=="" goto :ENDE  
if "%2"=="" goto :ENDE  
 
REM PSLIST ist ein Tool von SysInternals (http://technet.microsoft.com/de-de/sysinternals/bb896682.aspx) 
REM Nur damit ist die Abfrage der Prozesse möglich. 
pslist |find /i "%Suchname%" >nul  
 
REM Verzweigung, je nach Ergebnis 
if %errorlevel% == 0 (  
  REM Das Programm laeuft bereits und nichts wird gemacht 
) else (  
  REM Das Programm laeuft nicht und wird deshalb gestartet 
  start "" /D%Programm% 
 
:ENDE 
exit
Mitglied: bastla
19.05.2009 um 15:56 Uhr
Hallo WiSch!

Und so?
01.
@echo off & setlocal   
02.
REM Prameter von der Kommandozeile holen  
03.
set "Suchname=%~1" 
04.
set "Programm=%~2" 
05.
 
06.
REM Fehlt ein Parameter dann Ende  
07.
if not defined Programm goto :eof   
08.
 
09.
REM PSLIST ist ein Tool von SysInternals (http://technet.microsoft.com/de-de/sysinternals/bb896682.aspx)  
10.
REM Nur damit ist die Abfrage der Prozesse möglich.  
11.
pslist |find /i "%Suchname%" >nul   
12.
 
13.
REM Verzweigung, je nach Ergebnis  
14.
if %errorlevel% == 0 (   
15.
  REM Das Programm laeuft bereits und nichts wird gemacht  
16.
) else (   
17.
  REM Das Programm laeuft nicht und wird deshalb gestartet  
18.
  start "" /D"%Programm%" 
19.
) 
Noch als Anmerkung zu "Nur damit ist die Abfrage der Prozesse möglich.": Soferne Dein (nicht genanntes) BS mindestens XP ist, hättest Du auch "tasklist" zur Verfügung ...

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
19.05.2009 um 15:58 Uhr
Ändere mal
set Programm=%2
in
set Programm="%~2"
Bitte warten ..
Mitglied: WiSch
19.05.2009 um 16:26 Uhr
Weder die Schreibweise
01.
set "programm=%~2"
noch
01.
set programm="%~2"
führen zum gewünschten Ergebnis.

Zum BS: Ist XP und soll auch unter Win 2003 Server laufen
"tasklist" funktioniert auch, so brauche ich wenigstens kein zusätzliches Tool, danke.

Habe es mit folgendem Aufruf am Prompt probiert:
01.
einfachstart.cmd iexplore "C:\Programme\Internet Explorer\iexplore.exe"
und bekomme dann folgende Meldung zurück:
01.
Das aktuelle Verzeichnis ist ungültig.
Bitte warten ..
Mitglied: bastla
19.05.2009 um 16:30 Uhr
Hallo WiSch!

Sorry, leider nur oberflächlich gelesen ...

Versuch es mit folgender Zeile 18:
start "" "%Programm%"
Grüße
bastla
Bitte warten ..
Mitglied: WiSch
19.05.2009 um 16:43 Uhr
Es läuft!

Danke, hatte dieses /D in oben verlinktem Beitrag gefunden und deshalb übernommen...

Hier das lauffähige Script "Einfachstart.cmd" wie er jetzt eingesetzt wird:

01.
REM Prameter von der Kommandozeile holen 
02.
set "Suchname=%~1"  
03.
set "Programm=%~2" 
04.
 
05.
REM Fehlt ein Parameter dann Ende 
06.
if not defined Programm goto :ENDE  
07.
 
08.
REM Taskliste durchsuchen nach dem zu startenden Programm 
09.
tasklist |find /i "%Suchname%" >nul  
10.
 
11.
REM Verzweigung, je nach Ergebnis 
12.
if %errorlevel% == 0 (  
13.
  REM Das Programm laeuft bereits: Nichts machen 
14.
) else (  
15.
  REM Das Programm laeuft nicht: Programm starten  
16.
  start "" "%Programm%" 
17.
18.
 
19.
:ENDE 
20.
REM exit
Aufruf z.B. so:
01.
einfachstart iexplore "c:\programme\internet explorer\iexplore.exe"

//Edit:
@LotPings: Werde Deine Empfehlungen noch berücksichtigen, aber es läuft erst einmal so und das war (zeitlich) wichtig... Danke.
Bitte warten ..
Mitglied: LotPings
19.05.2009 um 16:45 Uhr
@WiSch

Ich würde ja das Vorhandensein eines notwendigen Tools überprüfen anstatt es nur im REM zu erwähnen.
Die Logik des Batches würde auch das Programm starten wenn PSList gar nicht vorhanden ist.

IMO ist es sinnvoller eine erläuternde Fehlermeldung vorzubereiten und im Fehlerfall auszugeben.
Das ist dann im Programmcode auch genauso sichtbar.

Also hier mein Vorschlag
01.
@echo off & setlocal   
02.
REM Prameter von der Kommandozeile holen  
03.
set "Suchname=%~1" 
04.
set "Programm=%~2" 
05.
 
06.
set ErrMsg=Usage: %~f0 Suchname Programm  Fehlt ein Parameter dann Ende  
07.
if not defined Programm Echo %ErrMsg% & Pause & Exit /B 1  
08.
 
09.
set ErrMsg=PSLIST ist ein für diese Batchdatei zwingend notwendiges Tool von SysInternals. 
10.
set ErrMsg=%ErrMsg% (http://technet.microsoft.com/de-de/sysinternals/bb896682.aspx)  
11.
 
12.
(set MyPath=.;%Path%)&IF defined PSList set "PSList=" 
13.
for /F "delims=" %%A in ("pslist.exe") do set "PSList=%%~$MyPath:A" 
14.
IF Not Defined PSList echo %ErrMsg% & Pause & Exit /B 2 
15.
 
16.
set ErrMsg=Programm %Programm läuft bereits, wird nicht nochmal gestartet. 
17.
"%PSList%" |find /i "%Suchname%" >nul &&Echo %ErrMsg% & Exit /B 3 
18.
 
19.
REM Das Programm laeuft nicht und wird deshalb gestartet  
20.
start "" /D"%Programm%"
Gruß
LotPings
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
BATCH: Leerzeichen im Registry Pfad
gelöst Frage von 118710Batch & Shell1 Kommentar

Hallo zusammen, dies ist mein erste Beitrag hier und ich hoffe ich bin richtig :P So! Erst ein mal ...

Batch & Shell
Leerzeichen im Pfad
Frage von JallioBatch & Shell4 Kommentare

Hallo erneut, ich werde hier echt noch zum Stammkunden Wenn ich den Befehl $body in der WindowsPowerShell ISE ausführe, ...

Batch & Shell
Pfad mit versteckten Ordner und Leerzeichen
gelöst Frage von dax4funBatch & Shell18 Kommentare

Hallo, attrib s -r -h C:\Dokume~1\All Us~1\Anwendungsdaten\Microsoft\Network\Connections\Pbk set link=C:\Dokume~1\All Us~1\Anwendungsdaten\Microsoft\Network\Connections\Pbk Ich will aus Bsp. D: die rasphone.pbk reinkopieren stehe ...

Backup
WBadmin und Leerzeichen im UNC-Pfad
gelöst Frage von runasserviceBackup4 Kommentare

Hallo, kann es sein das WBadmin kein Lerzeichen im UNC-Pfad erlaubt? wbadmin.exe start backup -backuptarget: \\BACKUP-PC\EINKAUF\PC MEYER\ -allCritical -quiet ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 12 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 16 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 16 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 19 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...