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

Wie kann man eine datei im PATH abfragen?

Frage Entwicklung Batch & Shell

Mitglied: klausph

klausph (Level 1) - Jetzt verbinden

16.11.2014, aktualisiert 12:25 Uhr, 949 Aufrufe, 7 Kommentare

guten tag
dank friemler und seinem for-tutorial bin ich schon weit gekommen.

meine aufgabe:
gibt es die datei sfk.exe im path?
wenn ja, mache weiter.
wenn nein, gebe ne warnung aus und stoppe.


friemler hatte die for-schleife mit echo:.
for %%n in ("sfk.exe") do echo "%%~$Path:n"
oder einfacher:
for %%n in ("sfk.exe") do echo "%%~n"

Meine Ansätze sind für den Einsatz IN einer bat/cmd gestrickt, deshalb das Doppel %. das hat schon Weile gedauert, bis ich friemlers Ansatz verstanden habe und auf den Einsatz in der bat/cmd umgemünzt habe


das ganze kann man auch mit call machen:
for %%n in ("sfk.exe") do call "%%~$Path:n"
oder:
for %%n in ("sfk.exe") do call "%%~n"


naja. aber wie werte ich das aus?
mit errorlevel habe ich das schon versucht.
if errorlevel 0 goto 123 (also erfolg)
if errorlevel 1 goto 456 (ist nicht im path)
das klappt nicht. auf echo/call kann ich kein errorlevel auswerten. oder denke ich falsch?


wie ihr seht, ist alles mit "" versetzt, weil sfk.exe HIER liegt:
c:\programme (x86)\Tools [nach programme ist einmal LEER]


eigentlich ist doch aufgabe eine sehr einfache, oder?
was habe ich falsch gemacht?


ein lösungsansatz fällt mir noch ein:

man könnte so vorgehen
for %%n in ("sfk.exe") do echo "%%~$Path:n" > irgendwas.txt
dann irgendwas.txt auf den korrekten inhalt "c:\programme (x86)\Tools\sfk.exe" durchsuchen. und auf "gefunden" oder "nicht gefunden" abfragen, und entsprechend reagieren lassen. ich weiss es nicht, ist das nicht VIEL zu kompliziert?

danke bei mitdenken
euer klaus(i)
Mitglied: Endoro
LÖSUNG 16.11.2014, aktualisiert um 20:28 Uhr
Hey,
mein Vorschlag:
01.
where sfk.exe >nul 2>&1 && echo sfk.exe gefunden || echo sfk.exe nicht gefunden
Könnte sein, dass where nicht in XP läuft.
Gruss, Endoro
Bitte warten ..
Mitglied: klausph
16.11.2014 um 18:43 Uhr
oh. prima.
ein externes kommando. kannte ich nicht. ja, wxp kennt es nicht (gerade gestetet...)
hm. ich werd' mal mit where jetzt was anfangen.... es ist ziemlich unwahrscheinlich, daß mein skript auf wxp laufen muss....
TROTZDEM wäre es sehr charmant, wenn man mit der cmd-shell eine lösung hätte. dann wäre es mehr oder weiniger betriebssystem-unabhängig...
mal schauen.
bis gleich!
gruß aus radeberg
vom k.l.
Bitte warten ..
Mitglied: Biber
LÖSUNG 16.11.2014, aktualisiert um 20:29 Uhr
Moin klausph,

eine Errorlevel-Auswertung auf "Echo" kannst du zwar machen, aber da "echo" immer Errorlevel 0 zurückgibt, besser so:

Beispiel am CMD-Prompt:
for %n in ("notepad.exe") do @echo "%~$Path:n"|find /i "notepad.exe">nul && echo is da 
for %n in ("notepad.exe") do @echo "%~$Path:n"|find /i "notepad.exe">nul || echo is nich da
Statt "notepad.exe" in deinem Fall "sfk.exe", statt "echo is da"/"echo is nich da" was immer sinnvoll sein mag.. ein Befehl, ein Goto.., ein Call:Sub.

Im Batch wieder die %-Zeichen verdoppeln.

Grüße
Biber

[Edit @ bastla. Moin, ja, ich denke, da liegen wir nicht weit auseinander.. [/Edit]
Bitte warten ..
Mitglied: bastla
LÖSUNG 16.11.2014, aktualisiert um 20:29 Uhr
Hallo klausph!

Kompliziert?
01.
for %%n in ("sfk.exe") do echo "%%~$Path:n"|findstr /ie "sfk.exe">nul && ( 
02.
    echo Gefunden 
03.
) || ( 
04.
    echo Leider nein 
05.
)
Anstelle der "echo"-Zeilen bieten sich vermutlich passende "goto" an ...

Grüße
bastla

[Edit] @ Biber: Da wären wir uns ja wieder einmal ziemlich einig ... [/Edit]
Bitte warten ..
Mitglied: klausph
16.11.2014, aktualisiert um 20:16 Uhr
danke ihr Lieben!
mittlerweile habe ich mir was für mein script zusammengeschustert:

01.
  
02.
@echo off 
03.
rem die konstruktion mit where.exe ist von "endoro" aus dem forum auf administrator.de vom 16.11.2014 um 18.13Uhr 
04.
rem die abfrage nach den errorleveln ist aus dem buch von Alois Kneisle "Batch-Betrieb ..."(Hanser 1996) S.126 
05.
rem nebenbei: das halte ich für ein wichtiges (altes!) grundlagenwerk, um die "batchsprache" zu erlernen. 
06.
 
07.
where /Q sfk.exe 
08.
for %%x In (0 1) do if errorlevel %%x set sfklevel=%%x 
09.
 
10.
rem beide nachfolgenden echo 's sind NICHT wichtig. nur spielerei ;-) 
11.
rem ich SEHE immer gerne was..... 
12.
if %sfklevel%]==0] echo alles prima. sfk gibt es! 
13.
if not %sfklevel%]==0] echo chef. problem!. sfk gibt nicht! 
14.
 
15.
rem auch DAS ist NICHT wichtig. nur für die optik ;-) 
16.
echo sfk.exe liegt auf: 
17.
for %%n in ("sfk.exe") do echo "%%~$Path:n" 
18.
pause 
19.
rem das WICHTIGE ist, ich habe eine set-variable gefüllt: die sfklevel mit einer 1 oder einer 0. das kann ich abfragen. 
20.
 
21.
 

[die pause muß natürlich weg]


@Biber und @bastla. danke an Euch! find.exe und findstr.exe sind externe befehle, genauso wie where.exe . es scheint also nix zu geben, was PUR auf cmd.exe beruht. ich habe diese lösungen sehr gerne, die auf einer "nackten" cmd.exe beruhen.
die gefahr, daß externe befehle untergegangen sind, oder eben fehlen, ist wohl immer größer.


danke und viele grüße
euer klaus(i)
Bitte warten ..
Mitglied: Endoro
16.11.2014, aktualisiert um 23:03 Uhr
Zitat von klausph:

@Biber und @bastla. danke an Euch! find.exe und findstr.exe sind externe befehle, genauso wie where.exe . es scheint also nix zu
geben, was PUR auf cmd.exe beruht. ich habe diese lösungen sehr gerne, die auf einer "nackten" cmd.exe beruhen.
die gefahr, daß externe befehle untergegangen sind, oder eben fehlen, ist wohl immer größer.

Naja, find und findstr gehen nicht einfach verloren. Fall doch, ist es Zeit für eine Windows-Reinstallation.
Übrigens geht mit Batch quasi alles

01.
for %n in ("sfk.exe") do @if not "%~$Path:n"=="" (echo Gefunden!) else echo Nicht gefunden!
Gruss, Endoro
Bitte warten ..
Mitglied: klausph
18.11.2014 um 13:08 Uhr
guten morgen enduro
ich muss da noch nen nachsatz nachschieben.
es ging mir nicht um die kontrolle des "PATH", was c:\windows\system usw usw anging.

folgendes nachträgliches:
habe da ein skript, was ca 12 Mill. datensätze verwurstet. da gehts um datenbewegungen von jeweils 10 GB
eine optische kontrolle ist da ganz schwer. ich war fast am ende meiner tests -diegehen schon 3 monate so!
irgendwann DURCH zufall habe ich gemerkt, daß ein such&ersetz-tool gar nicht angesprungen war. das script war so gestaltet, daß die ausgangsdatei überschrieben wurde
es musste durch irgendwas(?) passiert sein, daß eben c:\programme (x86)\tools aus dem %PATCH% rausgekickt wurden. keiner hats gemerkt!
deshalb muss ich den path auf das vorhandensein eines bestimmten tools überprüfen.
alternativ könnte man natürlich c:\programme (x86)\tools\sfk.exe schreiben. dazu bin ich aber zu faul
das war der hinter(n)grund
grüße aus radeberg
vom klaus(i)
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

IDE & Editoren
USB STICK Datei AUTOMATISCH beim anschliessen auf fremden PC öffnen (9)

Frage von Jwanner83 zum Thema IDE & Editoren ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...