Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Doppelte If-Abfrage funktioniert nicht

Frage Entwicklung Batch & Shell

Mitglied: chappy

chappy (Level 1) - Jetzt verbinden

20.09.2010, aktualisiert 18.10.2012, 4961 Aufrufe, 6 Kommentare

Hallo zusammen,

ich versuche schon krampfhaft folgendes in eine batch zu formulieren:
In einem Ordner soll geprüft werden, ob eine Datei *.lok vorhanden ist, wenn dem so ist, dann soll geprüft werden,

- prüfe in Ordner X, ob datei *.lok vorhanden,
---wenn ja, dann ende
- wenn nein, dann prüfe, ob *.csv im Ordner X vorhanden sind.
---wenn nein, dann ende
- wenn ja, dann sende mail
- ende

ich ahbe es so formuliert und es funktioniert nicht, egal, ob die Datei lok vorhanden ist oder nicht, bekomme ich eine Mail.

01.
 
02.
if exist "%%q\*.lok" ( 
03.
echo LOK vorhanden 
04.
goto ende 
05.
)  
06.
else if exist  "%%q\*.csv" 
07.
(  
08.
goto mail 
09.
echo CSV vorhanden 
10.
11.
:mail 
12.
cscript //nologo "%Msg%" "%%q\%%i" 
13.
:ende 
14.
 
kann mir jemand sagen, wo der Fehler liegt? habe auch ganz einfach mal versucht zu schreiben:

01.
if not exist "%%q\*.lok" 
02.
if exist "%%q\*.csv" do cscript //nologo "%Msg%" "%%q\%%i"
ich bin davon ausgegangen, dass wenn Zeile 1 erfüllt ist, würde Zeile 2 ausgeführt werden ansonsten tut er nichts liege ich da falsch? kann mir jemand sagen, wo ich mehr über batch-Anweisungen wie diese Beispiele lesen kann? Ich bin meist am probieren und weiss nicht, wo ich den Fehler habe.

Danke und Gruss
chappy
Mitglied: mathe172
20.09.2010 um 17:47 Uhr
Hallo chappy!

Meines Wissens nach ist es nicht möglich, platzhalter in if exist Abfragen zu benutzen. Wenn dies so ist (klärt mich auf wenns geht), dann versuch folgendes (ungetestet):
01.
for /R  %%A in (%%q\*.lok) do ( 
02.
if "%%q"=="%%~dpA" echo LOK vorhanden 
03.
04.
for /R  %%A in (%%q\*.csv) do ( 
05.
if "%%q"=="%%~dpA" echo CSV vorhanden 
06.
)
Mathe172
Bitte warten ..
Mitglied: Biber
20.09.2010 um 21:36 Uhr
Moin chappy,

deine beiden unteren geposteten Zeilen sind für den Batch-Interpreter absolut voneinander unabhängig - ohne Wenn-Dann-Beziehung.

Um das von dir gewollte (und ja richtig gedachte) Verhalten zu erzeugen, musst du es in EINER Befehlszeile schreiben.
01.
... 
02.
REM ich unterstelle, dass in %%q irgendwas Sinnvolles steht aus einer FOR-Anweisung weiter oben 
03.
 
04.
:: Jetzt & Falsch ### if not exist "%%q\*.lok" 
05.
:: Jetzt & Falsch ### if exist "%%q\*.csv" do cscript //nologo "%Msg%" "%%q\%%i" 
06.
 
07.
:: Das ist EINE Befehlszeile 
08.
if not exist "%%q\*.lok" if exist "%%q\*.csv" do cscript //nologo "%Msg%" "%%q\%%i" 
09.
 
10.
:: Auch das ist EINE Befehlszeile 
11.
if not exist "%%q\*.lok" ( 
12.
     if exist "%%q\*.csv" do cscript //nologo "%Msg%" "%%q\%%i" 
13.
14.
 
@mathe172
Doch, Platzhalter in "IF [NOT] Exist"-Abfragen sind zulässig.
Einfacher Test am CMD-Prompt
>for %i in (txt bat cmd abc) do @if exist "D:\temp\*.%i" echo .%i-Dateien existieren 
.txt-Dateien existieren 
.bat-Dateien existieren 
.cmd-Dateien existieren
Grüße
Biber
Bitte warten ..
Mitglied: chappy
21.09.2010 um 08:12 Uhr
Hallo Biber,

erst einmal Danke für deine Hilfe. Diese von dir aufgeschriebene Variante hatte ich bereits auch mal ausprobiert. Ich nahm an, dass diese falsch äre, da ich trotz fehlender *.lok Datei keine Mail bekomme. Das ist leider auch der Fall. Warum bekomme ich dann keine email versendet? Es interessiert ihn nicht, ob die lok im Ordner liegt oder auch nicht. Es verursacht das gleiche Verhalten.

Folgendes steht im cmd:

U:\>set "Pfade=U:\Daten_L\Datenpool\CheckDEALV\Pfade.txt"
U:\>set "Msg=U:\Daten_L\Datenpool\CheckDEALV\CheckFolderMailService.vbs"
U:\>if not exist "%q\*.lok" if exist "%q\*.csv" do cscript //nologo "U:\Daten_L\Datenpool\CheckDEALV\CheckFolderMailService.vbs" "%q\%i"
U:\>

Danke und Gruss
danke auch an Mathe172
Bitte warten ..
Mitglied: Biber
21.09.2010 um 15:19 Uhr
Moin chappy,

es kann ja nur funktionieren, wenn auch in dieser dynamischen Variablen "%q" (bzw. "%%q") irgendetwas Sinnvolles steht .
Vorzugweise eine Verzeichnisangabe.
Ob das so ist, kann ich doch aber nicht sehen von dieser Seite des Monitors aus.
Das müsstest du schon mal recherchieren und ggf mal mit einem "Echo If not exist "%q\*.lok" If exist "%q\*.csv..." sichtbar machen.

Oder ist das "%%q" nur ein Copy&Paste-Überbleibsel aus einem anderen Codeschnipsel und jetzt existiert gar keine FOR-Anweisung um deine geposteten Zeilen herum?

Grüße
Biber
Bitte warten ..
Mitglied: mathe172
21.09.2010 um 18:17 Uhr
@Biber
Zitat von Biber:
@mathe172
Doch, Platzhalter in "IF [NOT] Exist"-Abfragen sind zulässig.
Einfacher Test am CMD-Prompt
>for %i in (txt bat cmd abc) do @if exist "D:\temp\*.%i" echo .%i-Dateien existieren
.txt-Dateien existieren
.bat-Dateien existieren
.cmd-Dateien existieren


Man lernt nie aus...
Thx

Mathe172
Bitte warten ..
Mitglied: chappy
22.09.2010, aktualisiert 18.10.2012
Hallo Biber,

danke für deine Antwort genau das war das Problem. Ich hatte vergessen, %%q zu füllen. Desweiteren hatte ich nach jeder if-Anweisung ein do ( und das wurde auch moniert. Wenn ich das nu richtig verstanden habe, dann kommt nach der If-Anweisung direkt eine Klammer, kein do!?

Danke auf jeden Fall

chappy

PS. könntest du vielleicht auch mal beim folgenden Thread mitschauen? Ich komme da einfach nicht weiter.
http://www.administrator.de/forum/process%c3%bcberwachung-150244.html

nochmals Danke
Bitte warten ..
Ähnliche Inhalte
C und C++
gelöst IF Abfrage funktioniert nicht mehr (2)

Frage von pablovic zum Thema C und C ...

Batch & Shell
gelöst Powershell IF Abfrage Vergleichsoperatoren (4)

Frage von Peterz zum Thema Batch & Shell ...

Batch & Shell
Warum greift meine if-Abfrage nicht? (1)

Frage von jan999 zum Thema Batch & Shell ...

Linux Tools
gelöst Linux Script mit dreifacher If Abfrage verschachteln (9)

Frage von OIOOIOOIOIIOOOIIOIIOIOOO zum Thema Linux Tools ...

Neue Wissensbeiträge
Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(1)

Information von DerWoWusste zum Thema Microsoft ...

Humor (lol)

Wohnt jemand in Belgien und kann nicht mehr ruhig ausschlafen?

(5)

Information von LordGurke zum Thema Humor (lol) ...

Sicherheits-Tools

Trendmicro OSCE und das Fall Creators Update Win10 RS3

(3)

Information von Henere zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
Hosting & Housing
Mailserver Software Empfehlungen (21)

Frage von sunics zum Thema Hosting & Housing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (16)

Frage von liquidbase zum Thema Voice over IP ...

TK-Netze & Geräte
TK-Anlage VoIP - DECT Erweiterung (15)

Frage von Lynkon zum Thema TK-Netze & Geräte ...