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, 975 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 ..
Ähnliche Inhalte
Batch & Shell
TXT Datei bleibt nach Erstellung leer - woran liegt es? (7)

Frage von Komoran12 zum Thema Batch & Shell ...

Microsoft Office
gelöst Excel Datei automatisch , jede Woche , an bestimmten Drucker ausdrucken. (7)

Frage von tomigun zum Thema Microsoft Office ...

LAN, WAN, Wireless
gelöst Event.log datei runterladen von cisco system (2)

Frage von Herbrich19 zum Thema LAN, WAN, Wireless ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(3)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Windows 10
Windows 10 Home "Netzlaufwerk nicht bereit" (12)

Frage von Oggy01 zum Thema Windows 10 ...

Exchange Server
Exchange Postfach leeren - nicht löschen (10)

Frage von AndreasOC zum Thema Exchange Server ...