Zum Inhalt springen

VBS neuste Datei in einem Unterordner kopieren und umbennen


M4tRiX

Empfohlene Beiträge

So konnte es lösen.

musste nur statt

objFile.Name
objFile.Path
verwenden.. Weil in dem anderen war halt nur der name und deshalb wurde er nicht gefunden.
xmlDoc.Load(""& objFile.Path)

So funktioniert es jetzt!

Nur es kommt nun immer eine leere MSGBOx, kann man das irgendwie ausschalten? Weil das ist ganz schön nervig. Vorallem weil das Script auf einem Server laufen soll und dort nicht immer jemand sitzt und [OK] drückt...

Link zu diesem Kommentar
Auf anderen Seiten teilen

nee.. eigentlich nicht.^^

naja daran kann ich mich später noch kümmern. das ist weniger dramatisch...

problematischer ist es, das ich gerade versucht habe den dateiname zu splitten um diesen dann zu verschieben.


'Datei kan z.b. a_0000 oder b_000 sein, deshalb dieser split, aber _ wird alles getrennt

arHelp = split(objFile.Name, "_")

'Um aber den Dateityp zu behalten wird am Ende wieder .xml dran gehängt also heißt jetzt die Datei entweder a.xml oder b.xml

[COLOR="Red"]strFile = arHelp & ".xml"[/COLOR]		


objFSO.MoveFile objFile.Path , cDestination & "\" & strFile

Fehler: typen unverträglich (rot markiert die Zeile)

code: 800A000D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich weiss ja nicht wie lang dein Skript ist, aber klammere doch mal suxesive Bereiche im Skript aus, in dem du entweder selbst eine betextete MsgBox einfügst oder die halt auskommentierst, solang bist du die Zeile gefunden hast in der, dein Skript der Meinung ist eine MsgBox werfen zu müssen ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Frage mit dem wie lange Sie dort liegt, verstehe ich nicht ganz. Aber wenn du es so meinst, wie ich denke, dass du es meinst dann brauchst du etwas, dass dir anzeigt wann die Datei ERSTELLT oder das letzte mal GEÄNDERT wurde. Aus diesem und dem aktuellen Datum kann man eine DATUMSDIFFERENZ bilden :-)

Und ansonsten musst du halt schauen ob die Datei EXISTIERT...

MfG Erratum

P.s.: (ich hab dir die befehle faktisch schon hingeschrieben, jedoch ist vbs auf englisch...aber ne kurze Googelei sollte dir weiterhelfen und wenn nich...Dann hassu ja schon übung im Posten ^^)

Link zu diesem Kommentar
Auf anderen Seiten teilen

...und wenn nich...Dann hassu ja schon übung im Posten ^^)

hört sich bissle hart an xD^^:hells::hells:

naja.. die Frage hat sich soeben erledigt. Aber könntet ihr mir vielleicht erklären woran das liegt, das eine Funktion 2 Mal ausgeführt wird?

Zu meinem Problem. Ich will EINE E-mail verschicken. Aber das programm verschickt ZWEI Stück. Und auch der Virenscanner wird ZWEIMAL an- und ausgeschalten.

Ich denke mir das es an folgenden Zeilen liegt:

Set objFolder = objFSO.GetFolder(cSource)

Set colFiles = objFolder.Files

For Each objFile in colFiles	
und dann gaaaanz am ende
Next

Dieses Next muss in den Code da sonst ein Fehler auftaucht.. Wisst ihr wie ich das Umgehen kann?

Link zu diesem Kommentar
Auf anderen Seiten teilen

War nich hart gemeint :-)

Wenn ich das richtig verstanden habe, startest du die For Each Schleife am Anfang des Skript und gibst erst am Ende den next Befehl durch?

Nehmen wir mal auseinander was du da tust:

Set objFolder = objFSO.GetFolder(cSource)
Du öffnest für den gewünschten Ordner ein FSO
Set colFiles = objFolder.Files
Du liest die Dateien aus dem Ordner ein
For Each objFile in colFiles

Du startest für JEDE Datei in dem Ordner die Schleife.

Vlt solltest du einfach mal checken wie viele Dateien sich in dem Ordner befinden? 1 Datei => ein durchlauf, 2 Dateien => 2 Durchläufe...usw.usf...

MfG Erratum

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aber könntet ihr mir vielleicht erklären woran das liegt, das eine Funktion 2 Mal ausgeführt wird?
Daran, dass du sie zweimal aufrufst.

Zu meinem Problem. Ich will EINE E-mail verschicken. Aber das programm verschickt ZWEI Stück. Und auch der Virenscanner wird ZWEIMAL an- und ausgeschalten.
Dann hast du einen Logikfehler in deinem Programm.

Ich denke mir das es an folgenden Zeilen liegt:
Willst du alle Dateien durchsuchen? Dann brauchst du diese Zeilen.

Wisst ihr wie ich das Umgehen kann?
Ruf die Funktion nicht zweimal auf.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Mach doch einfach nen Counter, der wenn eine Mail verschickt wurde um eins hochzählt. Den fragst du vor dem verschicken der Mail ab und wenn er halt auf 0 steht schickt er und bei 1 nicht :-)

MfG Erratum

edit: Oder schick die Mail doch einfach nach der For...each....Next schleife

Bearbeitet von Eratum
Link zu diesem Kommentar
Auf anderen Seiten teilen

Beim Auslesen eines Logfiles habe ich mal wieder ein kleines Problem-.- :( *langsam wirds echt peinlich^^*

naja..

und zwar muss ich das "ändern datum" einer datei herausfinden... wie kann ich das machen?

Zum anderen muss ich dann in dem Logfile gucken wo genau dieses Datum vorhanden ist und ob es erfolgreich war oder nicht. Es steht dann da:

war erfolgreich oder war NICHT erfolgreich..

Danke für eure hilfe... ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

so das datum hab ich :)


Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFolder = objFSO.GetFolder (cSource)

Set colFiles = objFolder.Files

For Each objFile in colFiles


'Speicherung der Informationen der neusten Datei in Variablen

strFile = objFile.Name

strPath =  objFile.Path

strAccessed = objFile.DateLastAccessed

Link zu diesem Kommentar
Auf anderen Seiten teilen

hier der versprochene Code:


Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFile = objFSO.OpenTextFile(strPath, 1)

Do Until objFile.AtEndOfStream

     Redim Preserve arrFileLines(i)

     arrFileLines(i) = objFile.ReadLine

     i = i + 1



Loop

objFile.Close

For line = Ubound(arrFileLines) to LBound(arrFileLines) Step -1

	if arrFileLines(line)= ("blablabla") then 


		line= line+1


			finding = arrFileLines(line)

			line=line-1

	End if

Next


'Die gewünschte Zeile wird gespalten

arrFinding = Split(finding, ":")


'________________________________________________________________________



if(strFile="bla.xml") then


	if arrFinding(0) = ("NICHT erfolgreich") then

	'Verschiebt die Daten in den Ordner Error


		objFSO.MoveFile cDestination & strFile, cError

		objFSO.MoveFile cShort, cError


	End if


	if arrFinding(0) = ("erfolgreich") then


		Set objFSO = CreateObject("Scripting.FileSystemObject")

		objFSO.DeleteFile cDestination & strFile

		objFSO.DeleteFile cShort


	End if

End if

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...