davidaff
Goto Top

(vbs) MoveFile auf UNC Pfad klappt nicht

Ich versuche nach einem erstellten Backup (NTBackup) die erstellten Logfiles auf einen UNC Pfad umzuleiten.
Die dort erstellte Datei soll auch noch umbenannt werden (Datum.log)

Hallo

Ich versuche nach einem erstellten Backup (NTBackup) die erstellten Logfiles auf einen UNC Pfad umzuleiten.
Die dort erstellte Datei soll auch noch umbenannt werden (Datum.log)

Wenn ich die Datei nicht umbenenne, kein Problem, bis auf wenn die Datei mit gleichen Namen bereits vorhanden ist, was automatisch durch NTBackup der Fall ist.

Wenn ich aber die zu verschiebende Datei umbenenne, dann kommt Meldung -> Pfad kann nicht gefunden werden.
Dim Sourcepath
Dim Destinationpath
Dim strDate
Dim Pfad 

...

strDate = Year(Date()) & month(date()) & Day(Date())

set fso = CreateObject("SCRIPTING.FileSystemObject")

Pfad = "\\server\logfiles$\backuplogs\"
newfilename = strDate & ".log"

Sourcepath = "C:\Dokumente und Einstellungen\admin\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\*.log"
Destinationpath = Pfad & newfilename

fso.MoveFile Sourcepath, Destinationpath

Irgendwie gibt es hier denke eventuell ein Problem mit den Slashes oder so,
hab aber x Varianten probiert, leider ohne Erfolg.

Über jeden Tip bin ich dankbar.

Grüße David
Kommentar vom Moderator Biber am Oct 07, 2009 um 18:51:16 Uhr
Wenn ich die Datei nicht umbenne, kein Problem
Set /a rgc+=1
#623
Über jeden Tip bin ich dankbar.
Über richtige Verwendungen von Präpositionen würde ich mich auch freuen, wäre ich echt dankbar für. face-wink

Content-Key: 126663

Url: https://administrator.de/contentid/126663

Printed on: April 19, 2024 at 17:04 o'clock

Member: bastla
bastla Oct 07, 2009 at 18:39:31 (UTC)
Goto Top
Hallo Davidaff!

Ein Überschreiben ist mit "MoveFile" nicht vorgesehen - zerlege es in ein "CopyFile" (mit Option "Überschreiben") und ein "DeleteFile" oder prüfe vorweg auf das Vorhandensein einer gleichnamigen Datei im Zielverzeichnis und lösche diese vor dem Verschieben.

Grüße
bastla
Member: Davidaff
Davidaff Oct 07, 2009 at 18:51:42 (UTC)
Goto Top
Hallo,

Ein MoveFile reicht eigentlich völlig zu, da die neue Datei einen neuen Namen bekommen soll (07102009.log) welche nach täglicher Backuperstellung mit Resultat auf den UNC Pfad verschoben werden soll.

Grüße David
Member: Biber
Biber Oct 07, 2009 at 19:08:24 (UTC)
Goto Top
Moin Davidaff,

VBS ist ja nicht gerade mein Fachgebiet, aber AFAIK darf zwar der SOURCE-Fileangabe Wildcards enthalten, nicht aber die Ziel-Dateiangabe

Dementsprechend wäre das doch Bullshit eine mögliche Fehlerursache:
newfilename = strDate & ".log"
Sourcepath = "C:\Dokumente und Einstellungen\admin\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\*.log"
Destinationpath = Pfad & newfilename

fso.MoveFile Sourcepath, Destinationpath
> Heißt doch aufgelöst: fso.MoveFile "C:\....NTBackup\data\*.log" , "\\whereever\...\" &strdate &".log"

--> Muttu besser die *.log-Dateien im NTbackup-Dataordner einzeln anfassen.

Zum zweiten kann die fso.MoveFile-Methode (afaik) durchaus überschreiben.
Aber das ist hier eigentlich vollkommen gegenstandlos.

Grüße
Biber
Member: Davidaff
Davidaff Oct 07, 2009 at 19:10:37 (UTC)
Goto Top
@Biber
EDIT: wenn ich eine Printausgabe auf newfilename mache, bekomme ich aber ein brauchbares Resultat.(2009107.log)
Member: Biber
Biber Oct 07, 2009 at 19:21:08 (UTC)
Goto Top
Moin Davidaff,

wenn du diese von dir verwendete Suchmaschine, deren Name meine Lippen niemals verlassen wird, etwas verfeinert befragst und ich dir noch vorab verrate, dass rgc auch bekannt ist als mein persönlicher running gag counter, dann kommst du schnell dahinter:
Gib dich mal in die Suchmaschine deines Vertrauens ein:
running gag counter site:administrator.de


Aber erst später.
Wichtiger ist doch, dass ein
Move X:\Bla\Viele*.log \\Blubb\EineBestimmte.log
...nicht mal unter robusten Betriebssystemen funktionieren wird, warum also unter diesem Redmonder Stückwerk?

Entweder

Move X:\Bla\Viele*.log \\Blubb\
-oder-
FürAlle [i] In X:\Bla\Viele*.log
Move X:\Bla\Einzelne[i]Log \\Blubb\Einzelne[i].log

Grüße
Biber
Member: Davidaff
Davidaff Oct 07, 2009 at 19:29:05 (UTC)
Goto Top
Zitat von @Biber:
Wichtiger ist doch, dass ein
> Move X:\Bla\Viele*.log \\Blubb\EineBestimmte.log
...nicht mal unter robusten Betriebssystemen funktionieren wird,
warum also unter diesem Redmonder Stückwerk?


Grüße
Biber

Warum soll das nicht funktionieren?
Ich weis doch, das immer nur eine Datei im Quellordner ist.
Ich weis nur nicht, wie diese genau heißt.
Währen mehrere drin, klar das dies nicht klappt, aber es ist definitiv nur eine.

Grüße David
Member: Biber
Biber Oct 07, 2009 at 20:13:45 (UTC)
Goto Top
Moin Davidaff,

Ich sach' mal so.
Ich hab da eine Datei namens "a"
(=22:11:53  D:\temp=)
>dir  a.? /b
a

(=22:12:13  D:\temp=)
>move  a.? aWirdZuEinerB.*
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.

Grüße
Biber
Member: bastla
bastla Oct 07, 2009 at 20:14:59 (UTC)
Goto Top
Hallo Davidaff und Biber!

Wenn wir ausnahmsweise einmal MS glauben wollen, dann kann nicht verschoben werden, wenn
  • das Ziel eine existierende Datei ist (Überschreiben ist also nicht möglich) bzw
  • die Quelle Wildcards enthält und das Ziel kein existierender Ordner ist.

Grüße
bastla
Member: Davidaff
Davidaff Oct 07, 2009 at 20:25:30 (UTC)
Goto Top
Ich konnte das Problem lösen.
Ich hab die Datei erst im gleichen Ordner umbenannt und dann via MoveFile verschoben.

Für die nachfolgenden hier das fertige Script:
Sourcepath = "C:\Dokumente und Einstellungen\admin\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\"

set fso = CreateObject("Scripting.FileSystemObject")
set folder = fso.Getfolder(Sourcepath)

For each file in folder.Files
	varFileName= year(file.datelastmodified) & "-" & month(file.datelastmodified) & "-" & day(file.datelastmodified) & " " 
	varFileName = varFileName & hour(file.datelastmodified) & "." & minute(file.datelastmodified) & "." & Second(file.datelastmodified) & Right(file.Name,4)
	file.Name = VarFileName
next
Destinationpath = "\\server\logfiles$\backuplogs\"
fso.MoveFile Sourcepath & "*.log", Destinationpath

Grüße David
Member: bastla
bastla Oct 07, 2009 at 20:41:16 (UTC)
Goto Top
Hallo Davidaff!

Wenn Du ohnehin jede Datei anfasst, kannst Du das Verschieben auch direkt (jetzt treffen ja die beiden beschriebenen Einschränkungen nicht mehr zu) in der Schleife erledigen:
Sourcepath = "C:\Dokumente und Einstellungen\admin\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\"   
Destinationpath = "\\server\logfiles$\backuplogs\"  

Set fso = CreateObject("Scripting.FileSystemObject")   

For Each File In fso.Getfolder(Sourcepath).Files
    VarFileName = Year(File.DateLastModified) & "-" & Month(File.DateLastModified) & "-" & Day(File.DateLastModified) & " "  
    VarFileName = varFileName & Hour(File.DateLastModified) & "." & Minute(File.DateLastModified) & "." & Second(File.DateLastModified) & Right(File.Name, 4)  
    File.Move Destinationpath & VarFileName
Next
Etwas übersichtlicher wird's vielleicht noch, wenn alle Datums-/Zeitbestandteile auf eine fixe Länge gebracht werden, also etwa:
Sourcepath = "C:\Dokumente und Einstellungen\admin\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\"   
Destinationpath = "\\server\logfiles$\backuplogs\"  

Set fso = CreateObject("Scripting.FileSystemObject")   

For Each File In fso.Getfolder(Sourcepath).Files
    Timestamp = File.DateLastModified 
    VarFileName = Year(Timestamp)                   & "-" & _  
                  Right("0" & Month(Timestamp),  2) & "-" & _  
                  Right("0" & Day(Timestamp),    2) & " " & _  
                  Right("0" & Hour(Timestamp),   2) & "." & _  
                  Right("0" & Minute(Timestamp), 2) & "." & _  
                  Right("0" & Second(Timestamp), 2) & _  
                  Right(File.Name, 4)
    File.Move Destinationpath & VarFileName
Next
Grüße
bastla

P.S.: Für das Formatieren auf 2 Stellen mit führender Null würde sich natürlich eine Function anbieten, aber ich wollte das Ganze kompakt halten ...