| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Dateien von Server auf Lokale Festplatte kopieren per VBS? (8037 mal gelesen)
|
trainman Mitglied CAD/PDM Supporter

 Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 26. Apr. 2007 15:28 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen, heute habe ich mir eine neue Software zur Kompremierung von Bildern zugelegt. Damit kann ich eine abfrage im Batchverfahren starten lassen, suche mir alle Bilder welche eine grössere Auflösung als ... haben und reduziere bzw. Kompremiere die bestehende Datei bzw. Dateien. Bevor ich loslege will ich aber die Betreffenden Bilder auf eine oder mehrere DVD's brennen und somit sichern. Aus diesem Tool kann ich alle Dateipfäde in ein txt file speichen lassen (ca. 30000 Einträge) Jetzt kommt die eigentliche Frage: Gibt es ein Script oder lässt sich ein solches relativ einfach bewerkstelligen felches folgende Funktion erfüllt: Script sucht in Zeile 1 bzw. Eintrag 1(im txt File) worin genauer Pfad und Dateiname inkl. endung hinterlegt ist, z.Bsp. M:\Modelle\fotos\foto1.jpg prüft nun ob der Ordner Modelle\fotos unter C:\Save_Bilder\.. existiert? falls ja Datei von Netzlaufwerk M:\Modelle\fotos\foto1.jpg nach C:\Save_BilderModelle\fotos\foto1.jpg kopieren, falls nein Ordner und Unterordner erstellen anschliessend kopieren. sollte jemand ein solches Script zur Hand haben, währe ich wirklich sehr sehr Dankbar. Gruss Trainman. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 27. Apr. 2007 07:38 <-- editieren / zitieren --> Unities abgeben:          Nur für trainman
|
RENI Mitglied Entwickler

 Beiträge: 96 Registriert: 26.04.2002
|
erstellt am: 27. Apr. 2007 08:49 <-- editieren / zitieren --> Unities abgeben:          Nur für trainman
|
trainman Mitglied CAD/PDM Supporter

 Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 27. Apr. 2007 09:20 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen Ich habe nun "versucht" ein kleines Script zu schreiben, welches nun die Daten aus dem *.txt File ausliest und auf die lokal angelegte Ordnerstruktur die gewünschten Daten kopiert. Set fs = CreateObject("Scripting.FileSystemObject") Set fso = fs.OpenTextFile ("C:\temp\Info.txt" , 1 , True) PfadC = "C:\Save_Bilder_M" for i=0 to 20 PfadM = fso.readline Set fsBild = fs.GetFile (PfadM) PfadC = PfadC & mid( fsBild.ParentFolder , 3 ,Len(fsBild.Path) - 2 ) fsBild.Copy PfadC , True Next leider erhalte ich die Fehlermeldung: Script: C:\Temp\infor.vbs Zeile: 16 Zeichen:2 Fehler: Erlaubnis verweigert. Code: 800A0046 Quelle: Laufzeitfehler in Microsoft VBScript Hat jemand ne Ahnung wo der Hund steckt?
[Diese Nachricht wurde von trainman am 27. Apr. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 27. Apr. 2007 10:15 <-- editieren / zitieren --> Unities abgeben:          Nur für trainman
|
trainman Mitglied CAD/PDM Supporter

 Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 27. Apr. 2007 10:27 <-- editieren / zitieren --> Unities abgeben:         
|
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 27. Apr. 2007 10:41 <-- editieren / zitieren --> Unities abgeben:          Nur für trainman
|
trainman Mitglied CAD/PDM Supporter

 Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 27. Apr. 2007 10:47 <-- editieren / zitieren --> Unities abgeben:         
|
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 27. Apr. 2007 10:58 <-- editieren / zitieren --> Unities abgeben:          Nur für trainman
|
trainman Mitglied CAD/PDM Supporter

 Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 27. Apr. 2007 11:05 <-- editieren / zitieren --> Unities abgeben:         
Hallo tbd Ja ich habe in Kopierverzeichnis schreibrechte, die Datei ist im Zielverzeichnis noch nicht vorhanden, Ob sie überschreiben werden soll im Zielverzeichnis spielt mir keine Rolle. Da ich jedes mal die Ordnerstruktur mit dem Tool copyXtree neu anlege und nur einmalig die Daten rauskopieren möchte. Gruss Trainman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
trainman Mitglied CAD/PDM Supporter

 Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 27. Apr. 2007 11:09 <-- editieren / zitieren --> Unities abgeben:         
|
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 27. Apr. 2007 11:19 <-- editieren / zitieren --> Unities abgeben:          Nur für trainman
Das kann es natürlich sein! Ist lange her das ich mit dem FSO gearbeitet habe (.net sei dank!). Ich kann dir mal eine alte vb Funktion geben, weis jetzt auf die schnelle jedoch nicht was und wie man die für vbs anpassen muss. Die Funktion wandelt einen Windowspfad in einen Dospfad um: Code:
'Win API Private Declare Function GetShortPathName Lib "kernel32" _ Alias "GetShortPathNameA" (ByVal lpszLongPath As String, _ ByVal lpszShortPath As String, ByVal cchBuffer As Long) _ As Long'Funktion Public Function DospfadErmitteln(ByVal sFilename As String) As String 'Bei einem Fehler On Error GoTo FunctionFehler Dim strFile As String Dim lLen As Long strFile = Space$(256) lLen = GetShortPathName(sFilename, strFile, Len(strFile)) strFile = Left$(strFile, lLen) DospfadErmitteln= strFile Exit Function FunctionFehler: End Function
Ich hoffe du kannst damit was anfangen, habe leider keine Zeit die Funktion auf vbs anzupassen und zu testen, sorry! ------------------ Mfg Daniel Lesen ist super. Nur die Buchstaben machen einen verrückt! ------------------
SolidWorks Programmierung | Tools | Makros | Software; Schuler Design Automation GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bst Mitglied
 
 Beiträge: 192 Registriert: 31.08.2004
|
erstellt am: 27. Apr. 2007 13:27 <-- editieren / zitieren --> Unities abgeben:          Nur für trainman
Auch Hallo, M.E. müßte sich das leicht mit einer kleinen Batchdatei erledigen lassen. Gruß, Bernd -- @echo off setlocal enableextensions for /F %%i in (tocopy.txt) do mkdir C:\Save_Bilder%%~pi & copy %%i C:\Save_Bilder%%~pni endlocal
[Diese Nachricht wurde von bst am 27. Apr. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
trainman Mitglied CAD/PDM Supporter

 Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 27. Apr. 2007 13:50 <-- editieren / zitieren --> Unities abgeben:         
Hallo bst Das sieht sehr gut aus, ist die Pfadlänge irgendwie begränzt? habe es gerade ausprobiert, die Dateiendung hat er nicht durchgeführt. Er hat nur bis zum 83 Zeichen kopiert jetzt ist zwar die Datei da aber ohne endung z.Bsp. tif Gruss und Dank für eure Unterstützung Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bst Mitglied
 
 Beiträge: 192 Registriert: 31.08.2004
|
erstellt am: 27. Apr. 2007 14:14 <-- editieren / zitieren --> Unities abgeben:          Nur für trainman
Hallo, die Pfadlänge ist M.E. nicht begrenzt, die Extension hatte ich einfach vergessen  Hier eine korrigierte Version, die auch noch die Existent des Zielverzeichnisses prüft. Eine Hilfe zu den %~-Teilen findest Du übrigens (u.a.) bei for /?. lg, Bernd -- @echo off setlocal enableextensions for /F %%i in (tocopy.txt) do ( if not exist C:\Save_Bilder%%~pi\*.* mkdir C:\Save_Bilder%%~pi copy %%i C:\Save_Bilder%%~pnxi ) endlocal
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
trainman Mitglied CAD/PDM Supporter

 Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 27. Apr. 2007 14:21 <-- editieren / zitieren --> Unities abgeben:         
|
bst Mitglied
 
 Beiträge: 192 Registriert: 31.08.2004
|
erstellt am: 27. Apr. 2007 17:16 <-- editieren / zitieren --> Unities abgeben:          Nur für trainman
Hi, wenn Du Leerzeichen in den Dateinamen oder Pfaden hast mußt Du Anführungszeichen drumherumbauen. Ungetestet, da Feierabend  Code: @echo off setlocal enableextensions for /F %%i in (tocopy.txt) do ( if not exist "C:\Save_Bilder%%~pi\*.*" mkdir "C:\Save_Bilder%%~pi" copy "%%i" "C:\Save_Bilder%%~pnxi" ) endlocal
Gruß, Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |