Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VBS neuste Datei in einem Unterordner kopieren und umbennen

Empfohlene Antworten

z.B. könnte das drin stehen: "C:\temp\test.xml"

Jedoch wechselt sich der Pfad bei jedem Durchlauf. deshalb muss ich eine variable benutzen.

z.B. könnte das drin stehen: "C:\temp\test.xml"
Ich möchte aber nicht wissen, was drin stehen könnte, sondern was konkret, tatsächlich und wirklich drinsteht, wenn dieser Fehler auftritt. Du kannst ja zum Testen den Debugger bemühen oder eine Messagebox einbauen.

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...

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

oh man wie klein doch die Fehler sein können^^...:upps

naja für die "nachwelt";)

arrHelp = Split(objFile.Name, "_")


		strFile = arrHelp(0) & ".xml"

so funktioniert es...

Aber das mit der Messagebox ist immer noch ^^

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 ^^

sooo.. habs gefunden. war diese Zeile

WScript.Echo objShtCut.TargetPath

puuh.^^

Ist es theoretisch möglich, zu gucken wie lang die Datei nun in diesem Ordner liegt? und wenn die Datei nicht mehr vorhanden ist. das Script neu starten?

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 ^^)

...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?

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

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.

Achso okay..

Ja es kommt immer drauf an... manchmal liegt eine Datei drin nach der e-mail wird diese gelöscht und manchmal 2..

Wie kann ich es nun verändern das auch alle Dateien durchsucht werden aber nicht jedes mal die schleife gestartet wird?

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

Okay vielen Dank euch 2!

Ich les mich dann mal weiter ein in Richtung Logfile auslesen. ;)

Falls ich fragen hab, meld ich mich wieder :)

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... ;)

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

hab alles herausgefunden.. ich veröffetnliche am mittwoch den code.. damit alle was davon haben wenn jemand das gleiche problem mal haben sollte... oder so ähnlich.. danke für eure hilfe :):uli:uli:uli

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.