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

If exist - if not exist in .vbs - Datei

Frage Entwicklung VB for Applications

Mitglied: Komoran12

Komoran12 (Level 1) - Jetzt verbinden

11.08.2017 um 14:44 Uhr, 441 Aufrufe, 24 Kommentare

Moin, moin,

vielleicht hat jemand ja einen Tipp für mich. Mit nachfolgender .vbs lasse ich mir einen Messagebox ausgeben:

01.
msgbox"Konvertierung abgeschlossen!" & vbCrLf & "" & vbCrLf & "Konvertierung abgeschlossen! ",64,"Konvertierung abgeschlossen!"
Allerdings würde ich jetzt gerne diese nur ausgeben lassen, wenn ich einem bestimmten Verzeichnis (%userprofile%\Temp) .txt Dateien liegen.

Jetzt dachte ich daran, es wie folgt zu lösen:

01.
set quelle=%userprofile%\Temp\*.txt 
02.
if exist "%quelle%"  goto :test 
03.
if not exist ""%quelle%"" goto :EOF 
04.
:test 
05.
msgbox"Konvertierung abgeschlossen!" & vbCrLf & "" & vbCrLf & "Konvertierung abgeschlossen! ",64,"Konvertierung abgeschlossen!"
Allerdings funktioniert das leider nicht! Hat jemand eine Idee, dass anders zu lösen?

Beste Grüße!
Mitglied: emeriks
11.08.2017, aktualisiert um 15:09 Uhr
Hi,
na ja, man kan nicht einfach so Batch nach VBscript "kopieren". Bei Powershell mag das ja z.T. noch gehen.

1. Syntax lautet "if ... then ..."
2. Die Existenz mehrerer Dateien kann man eh so nicht abfragen. Das machst Du in VBscript z.B. mit Scripting.FileSystemObject.

So etwa
01.
dim WshShell : set WshShell = CreateObject("Wscript.Shell") 
02.
dim FSO : set FSO = CreateObject("Scripting.FileSystemObject") 
03.
dim Path : Path = WshShell.ExpandEnvironmentStrings("%userprofile%") & "\Temp" 
04.
dim File 
05.
for each File in FSO.GetFolder(Path).Files 
06.
  if lcase(right(File.Name,4)) = ".txt" then 
07.
    msgbox "Konvertierung abgeschlossen!" & vbCrLf & "" & vbCrLf & "Konvertierung abgeschlossen! ",64,"Konvertierung abgeschlossen!" 
08.
    exit for 
09.
  end if 
10.
next
E.
Bitte warten ..
Mitglied: em-pie
11.08.2017, aktualisiert um 15:45 Uhr
Moin,

dein Problem ist, dass du Batch und vbs vermischt:
Du versuchst die Variable quelle mit %-Zeichen anzusprechen.
Dass Variablen via %-Zeichen angesprochen werden, ist jedoch eine Terminologie des Batch-Scriptings

Genauso wie das Zuweisen einer Variable.

Klassischerweise funktioniert das Zuweisen und "Abrufen" wie folgt:
01.
'Deklarieren 
02.
DIM strVar 
03.
 
04.
'Zuweisen 
05.
strVar = "Meine Variable" 
06.
 
07.
'Verwenden: 
08.
wscript.echo strVar
um zu prüfen, ob Dateien zunächst vorhanden sind, schaue dir mal die Methode GetFolder an.

Hier kannst du dann z.B. für jede Datei prüfen (mittels for each objFile in objGetFolders), ob die Extension "txt" entspricht und einen Zähler hochlaufen lassen.
Ist deiner Counter >0, dann lässt du die msgbox "anspringen"...

Hilfen findest du hier:
https://msdn.microsoft.com/de-de/library/f1xtf7ta(v=vs.84).aspx
http://www.vbsedit.com/html/867057a0-50cf-4613-84be-28bf908b23a7.asp
https://stackoverflow.com/questions/4200028/vbscript-list-all-pdf-files- ...
https://stackoverflow.com/questions/6759299/check-to-see-if-any-file-exi ...

Gruß
em-pie

€dit: Typo &

Emeriks Variante bedeutet, dass du bei jeder vorhandenen *.txt-Datei eine msgbox erhälst, bei 3000-Dateien also 3000 Msg-Boxen...

€dit2: Gestrichenes erklärt sich unten!
Bitte warten ..
Mitglied: emeriks
11.08.2017 um 15:15 Uhr
Emeriks Variante bedeutet, dass du bei jeder vorhandenen *.txt-Datei eine msgbox erhälst, bei 3000-Dateien also 3000 Msg-Boxen...
Nein, bedeutet sie nicht!
Bitte warten ..
Mitglied: beidermachtvongreyscull
11.08.2017 um 15:41 Uhr
Zitat von em-pie:
Emeriks Variante bedeutet, dass du bei jeder vorhandenen *.txt-Datei eine msgbox erhälst, bei 3000-Dateien also 3000 Msg-Boxen...

Wenn Du Zeile 8 und Zeile 9 von @emeriks Code anschaust, siehst Du es.
Trifft die if-Abfrage zu wird in Zeile 8 die for-Schleife schon wieder verlassen.
Die msgbox kommt also nur einmal auf bei der ersten gefundenen txt-Datei.
Bitte warten ..
Mitglied: em-pie
11.08.2017 um 15:44 Uhr
jo... ihr habt recht, das exit for habe ich glattweg überlesen...
Verzeiht mir bitte!
Bitte warten ..
Mitglied: emeriks
11.08.2017 um 16:08 Uhr
Verzeiht mir bitte!
Niemals!
Bitte warten ..
Mitglied: Komoran12
11.08.2017 um 16:26 Uhr
Zitat von emeriks:

Hi,
na ja, man kan nicht einfach so Batch nach VBscript "kopieren". Bei Powershell mag das ja z.T. noch gehen.

1. Syntax lautet "if ... then ..."
2. Die Existenz mehrerer Dateien kann man eh so nicht abfragen. Das machst Du in VBscript z.B. mit Scripting.FileSystemObject.

So etwa
01.
> dim WshShell : set WshShell = CreateObject("Wscript.Shell") 
02.
> dim FSO : set FSO = CreateObject("Scripting.FileSystemObject") 
03.
> dim Path : Path = WshShell.ExpandEnvironmentStrings("%userprofile%") & "\Temp" 
04.
> dim File 
05.
> for each File in FSO.GetFolder(Path).Files 
06.
>   if lcase(right(File.Name,4)) = ".txt" then 
07.
>     msgbox "Konvertierung abgeschlossen!" & vbCrLf & "" & vbCrLf & "Konvertierung abgeschlossen! ",64,"Konvertierung abgeschlossen!" 
08.
>     exit for 
09.
>   end if 
10.
> next 
11.
> 
E.

Hi emeriks,

genau sowas habe ich gesucht und versucht, vielen Dank, ich werde es gleich mal direkt testen.

Kann ich das so anpassen, dass er die Messagebox nur ausgibt, wenn nur bestimmte .txt Dateien vorhanden sind?
Alles eine .txt Datei die zu einem mit convert.... anfängt und die zweite die mit complete... anfängt.
Bitte warten ..
Mitglied: emeriks
11.08.2017, aktualisiert um 16:30 Uhr
Kann ich das so anpassen, dass er die Messagebox nur ausgibt, wenn nur bestimmte .txt Dateien vorhanden sind?
Ja.
Alles eine .txt Datei die zu einem mit convert.... anfängt und die zweite die mit complete... anfängt.
Kann ich nicht beantworten. Ich verstehe den Text nicht.
Bitte warten ..
Mitglied: Komoran12
11.08.2017 um 16:38 Uhr
Sorry - die es gibt 2 .txt Dateien die vorhanden sein sollen, um die Message auszugeben.

1. txt -> convert-18.09.52.txt
2. txt -> complete-18.09.54.txt

Hierbei soll er halt convert und complete nur als variable nehmen.
Bitte warten ..
Mitglied: emeriks
11.08.2017 um 16:44 Uhr
Na dann baue das so ein.
01.
if lcase(left(File.Name,7)) = "convert" and lcase(right(File.Name,4)) = ".txt" then 
Bitte warten ..
Mitglied: Komoran12
11.08.2017 um 16:51 Uhr
Zitat von emeriks:

Na dann baue das so ein.
01.
> if lcase(left(File.Name,7)) = "convert" and lcase(right(File.Name,4)) = ".txt" then  
02.
> 

Ok, vielen Dank. Wie ist es, wenn hier ein "und" habe möchte?

01.
if lcase(left(File.Name,7)) = "convert" and lcase(right(File.Name,4)) = ".txt" and 
02.
if lcase(left(File.Name,7)) = "complete" and lcase(right(File.Name,4)) = ".txt" 
03.
then 
Bitte warten ..
Mitglied: emeriks
11.08.2017 um 17:14 Uhr
Wieso "und"? "Oder" !
Und ein Bißchen Lesen und learning by doing ist nichts für Dich?
Bitte warten ..
Mitglied: Komoran12
12.08.2017 um 12:23 Uhr
Das mit "or" hatte ich verstanden, aber ich wollte gerne das beides erfüllt sein muss. Daher das "und"
Bitte warten ..
Mitglied: emeriks
LÖSUNG 12.08.2017 um 15:24 Uhr
Achso. die Message soll nur einmal kommen und das nur dann, wenn diese beiden Datein gleichzeitig vorhanden sind?
Nach dann überlege mal selbst ob man das mit der Überprüfung des Namens einer Datei hinbekommen könnte?
Du willst weder
"Wenn jemand anwesend ist, der/die Paul und Tina heißt, dann bitte melden."
noch
"Wenn jemand anwesend ist, der/die Paul oder Tina heißt, dann bitte melden."
sondern
"Wenn jemand anwesend ist, der Paul heißt, und dann noch jemand, die Tina heißt, dann bitte melden."
Du musst also durch den Raum gehen und Dir merken, ob Du Paul oder Tina schon getroffen hast.
01.
dim WshShell : set WshShell = CreateObject("Wscript.Shell") 
02.
dim FSO : set FSO = CreateObject("Scripting.FileSystemObject") 
03.
dim Path : Path = WshShell.ExpandEnvironmentStrings("%userprofile%") & "\Temp" 
04.
dim File, ConvertExist, CompleteExist 
05.
ConvertExist = False 
06.
CompleteExist = False 
07.
for each File in FSO.GetFolder(Path).Files 
08.
    if lcase(left(File.Name,7)) = "convert" and lcase(right(File.Name,4)) = ".txt" then 
09.
      ConvertExist = True 
10.
    end if   
11.
    if lcase(left(File.Name,8)) = "complete" and lcase(right(File.Name,4)) = ".txt" then 
12.
      CompleteExist = True 
13.
    end if   
14.
    if ConvertExist and CompleteExist then 
15.
        msgbox "Konvertierung abgeschlossen!" & vbCrLf & "" & vbCrLf & "Konvertierung abgeschlossen! ",64,"Konvertierung abgeschlossen!" 
16.
    exit for 
17.
  end if 
18.
next
Bitte warten ..
Mitglied: Komoran12
14.08.2017 um 15:03 Uhr
Hallo emeriks, vielen Dank für Deine Hilfe.
Das funktioniert soweit alles sehr gut - danke.

Wenn ich die Dateinamen jetzt anpasse, will es irgendwie nicht funktionieren.

01.
dim WshShell : set WshShell = CreateObject("Wscript.Shell") 
02.
dim FSO : set FSO = CreateObject("Scripting.FileSystemObject") 
03.
dim Path : Path = WshShell.ExpandEnvironmentStrings("%userprofile%") & "\Temp" 
04.
dim File, ConvertExist, CompleteExist 
05.
ConvertExist = False 
06.
CompleteExist = False 
07.
for each File in FSO.GetFolder(Path).Files 
08.
    if lcase(left(File.Name,7)) = "convert" and lcase(right(File.Name,4)) = ".txt" then 
09.
      ConvertExist = True 
10.
    end if   
11.
    if lcase(left(File.Name,8)) = "complete" and lcase(right(File.Name,4)) = ".txt" then 
12.
      CompleteExist = True 
13.
    end if   
14.
    if ConvertExist and CompleteExist then 
15.
        msgbox "Konvertierung abgeschlossen!" & vbCrLf & "" & vbCrLf & "Konvertierung abgeschlossen! ",64,"Konvertierung abgeschlossen!" 
16.
    exit for 
17.
  end if 
18.
next
Ich habe jetzt Zeile 8 mit test1 und Zeile 11 mit test2 bei mir angepasst - allerdings dann funktioniert es nicht.
Bitte warten ..
Mitglied: emeriks
14.08.2017, aktualisiert um 15:17 Uhr
Ja ist logisch.
Hast Du Dir auch nur einmal die Befehle angesehen, was diese machen und warum da welche Parameter stehen? Ein Bißchen Initiative?

lcase
left
right
Bitte warten ..
Mitglied: Komoran12
14.08.2017 um 15:23 Uhr
Ja, das habe ich, aber irgendwie will das nicht so, wie ich es will
Muss ggf. Zeile 9,12,14 ebenfalls angepasst werden?
Bitte warten ..
Mitglied: beidermachtvongreyscull
14.08.2017 um 15:26 Uhr
Hast Du denn den Code zwischen den Zeilen 7 und 14 überhaupt verstanden?
Bitte warten ..
Mitglied: emeriks
LÖSUNG 14.08.2017 um 15:27 Uhr
Ja, das habe ich, aber irgendwie will das nicht so, wie ich es will
Muss ggf. Zeile 9,12,14 ebenfalls angepasst werden?
Ja. Z.B. in 9 könntest Du schreiben "noch trueer"

Mal im Ernst:
Ja, das habe ich
Was machen die von mir fett geschriebenen Funktionen? Wenn Du mir diese Frage beantworten kannst, dann helfe ich weiter.
Bitte warten ..
Mitglied: beidermachtvongreyscull
14.08.2017 um 15:35 Uhr
OK.

Ich bin raus, denn jetzt wird's bescheuert.
Bitte warten ..
Mitglied: Komoran12
17.08.2017 um 17:10 Uhr
Zitat von emeriks:

Ja ist logisch.
Hast Du Dir auch nur einmal die Befehle angesehen, was diese machen und warum da welche Parameter stehen? Ein Bißchen Initiative?

lcase
left
right

Hi emeriks, hat lcase ggf. etwas mit der länge des Wortes zu tun? Irgendwie steige ich da nicht durch, würde es aber gerne wissen.
Bitte warten ..
Mitglied: em-pie
17.08.2017 um 19:43 Uhr
Hast du mal nach den Funktionen
Left()
Right()
Lcase()
UCase()
Im Zusammenhang mit vbs geschaut?

Wenn wenn ja, wirst du obigen Code und deinem String test_.txt verstehen.

Was macht denn ein Right("test_.txt", 4)?
Bitte warten ..
Mitglied: Komoran12
18.08.2017 um 13:10 Uhr
Zitat von em-pie:

Hast du mal nach den Funktionen
Left()
Right()
Lcase()
UCase()
Im Zusammenhang mit vbs geschaut?

Wenn wenn ja, wirst du obigen Code und deinem String test_.txt verstehen.

Was macht denn ein Right("test_.txt", 4)?

Hallo em-pie, ich konnte mich da jetzt endlich einlesen und habe es verstanden...

Wenn ich hier:

01.
if lcase(left(File.Name,7)) = "convert" and lcase(right(File.Name,4)) = ".txt" then 
anstatt convert.txt - test123.txt habe, muss ich es wie folgt anpassen:

01.
if lcase(left(File.Name,8)) = "test1234" and lcase(right(File.Name,4)) = ".txt" then 
Bitte warten ..
Mitglied: emeriks
18.08.2017 um 13:15 Uhr
Geht doch.
Bitte warten ..
Ähnliche Inhalte
Suse
Cronjob wird nicht ausgeführt - File not Exists obwohl die da ist
gelöst Frage von killtecSuse6 Kommentare

Hallo, ich wolllte einen Cronjob laufen lassen. Dieser startet jedoch nicht. Die Datei existiert jedoch und funktioniert auch. Hat ...

Batch & Shell
If Exists auf Datei in Pfad mit Leerzeichen?
Frage von TheRealErebosBatch & Shell6 Kommentare

Hallo, ich habe ein Problem mit einem Batch. Ich möchte gerne prüfen ob Datei 1 nicht mehr vorhanden ist ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes
Frage von Sentinel87VB for Applications

Hallo zusammen, ich bin ein absoluter Anfänger im Bezug auf VBS und habe nun die Aufgabe ein Script zu ...

VB for Applications
CSV Datei mit VBS auslesen
Frage von scorpionesc83VB for Applications4 Kommentare

Hallo zusammen, ich bin in Sachen VBS ein totaler Anfänger und hoffe, dass ihr mir bei einem Problem helfen ...

Neue Wissensbeiträge
Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 2 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 3 TagenWebbrowser7 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 3 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...