Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Verzeichnis kopieren mit vb

Frage Entwicklung VB for Applications

Mitglied: reni09

reni09 (Level 1) - Jetzt verbinden

09.02.2011, aktualisiert 18.10.2012, 4295 Aufrufe, 16 Kommentare

Hallo,

ich hab leider fast null Ahnung von VB, muss aber per VB Verzeichnisse (rekursiv) kopieren lassen.

Nun hab ich mir mit Hilfe des Internets ein Script zusammen "gestolpert" ... nur leider tut es nicht

Es kommt keine Fehlermeldung (mehr), aber es wird auch nix kopiert.
Könntet ihr mir bitte weiterhelfen?

Hier der aktuellste Code (glaub 8. Versuch)

01.
Option Explicit 
02.
Dim objFSO, objFolder, strSrcFld, strDstFld 
03.
 
04.
strSrcFld = "C:\temp\ipos" 
05.
strDstFld = "C:\Dokumente und Einstellungen\admine\Desktop" 
06.
'strDstFld = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERPROFILE%") & "\Desktop" 
07.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
08.
 
09.
If objFSO.FolderExists(strDstFld) Then 
10.
   Set objFolder = objFSO.GetFolder(strDstFld) 
11.
Else 
12.
   WScript.Echo "Ordner nicht da, er wird kopiert." 
13.
   objFSO.CopyFolder strSrcFld, strDstFld 
14.
End If 
15.
 
16.
Set objFSO = Nothing
Und das Ergebnis sollte möglichst so sein, das ich %USERPROFILE% verwenden kann.

Vielen Dank vorab!!
Gruß Renate
Mitglied: bastla
09.02.2011 um 22:19 Uhr
Hallo reni09!

Ich nehme an, das wäre eher so gemeint:
01.
Option Explicit 
02.
Dim objFSO, strSrcFld, strDstFld 
03.
strSrcFld = "C:\temp\ipos" 
04.
strDstFld = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\ipos" 
05.
 
06.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
07.
If Not objFSO.FolderExists(strDstFld) Then 
08.
   WScript.Echo "Ordner nicht da, er wird kopiert." 
09.
   objFSO.CopyFolder strSrcFld, strDstFld 
10.
End If 
11.
 
12.
Set objFSO = Nothing
Es könnte zwar auch %USERPROFILE% verwendet werden, allerdings ist der Desktop unmittelbar als "SpecialFolder" ansprechbar (und da der mit allergrößter Wahrscheinlichkeit vorhanden ist , bin ich davon ausgegangen, dass das Vorhandensein des Ordners "ipos" auf dem Desktop geprüft werden sollte) ...

Grüße
bastla
Bitte warten ..
Mitglied: reni09
09.02.2011 um 22:29 Uhr
Hallo und vielen Dank bastla,

ich werd das morgen auch testen ... nur war das mit dem Desktop scheinbar ein doofes Beispiel
Im wahren Leben soll das Verzeichnis wirklich direkt nach %USERPROFILE% kopiert werden.

Wie müste es dann aussehen?

Und ja, es soll zuvor auch geprüft werden, ob das Verzeichnis schon existiert

Danke und Gruß
Bitte warten ..
Mitglied: bastla
09.02.2011 um 22:35 Uhr
Hallo reni09!
Im wahren Leben soll das Verzeichnis wirklich direkt nach %USERPROFILE% kopiert werden.
Dann hattest Du es ja eigentlich ohnehin schon:
strDstFld = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERPROFILE%") & "\ipos"
Grüße
bastla
Bitte warten ..
Mitglied: reni09
10.02.2011 um 16:03 Uhr
Hallo bastla,

ich danke dir wie verrückt ... so tuts jetzt *freu*

Noch eine Frage der Vollständigkeithalber:
Wenn es das Verzeichnis schon gibt, dann wird nix kopiert (logisch).
Aber das Script läuft normal weiter. Oder?
Weil dieser Teil kommt neu an den Anfang eines vorhandenen, aktiven VB-Scriptes.

Ach und noch was (weil ich dich grad so schön hier hab ;) ) ... gibts anstelle "objFSO.CopyFolder" auch was zum Ausschneiden?
(das würde ich vermutlich auch schnell im Netz finden, aber du hast es sicher sofort parat *vermut* ... Faulheit lässt grüßen, sorry)

Gruß reni
Bitte warten ..
Mitglied: reni09
10.02.2011 um 18:37 Uhr
Zitat von reni09:
Ach und noch was (weil ich dich grad so schön hier hab ;) ) ... gibts anstelle "objFSO.CopyFolder" auch was zum
Ausschneiden?

Ich glaub ich habs: "objFSO.MoveFolder" ... stimmts?
Bitte warten ..
Mitglied: bastla
10.02.2011 um 20:02 Uhr
Hallo reni09!

Ich hätte es zwar parat gehabt, war aber gerade nicht parat ...
Wenn es das Verzeichnis schon gibt, dann wird nix kopiert (logisch).
Aber das Script läuft normal weiter. Oder?
Ja.
Noch als Hinweis zu "MoveFolder": Das Verschieben auf ein anderes Laufwerk (nur falls Du's mal brauchen solltest) wird (nach meinen Erfahrungswerten) damit nicht klappen ...

Grüße
bastla
Bitte warten ..
Mitglied: TsukiSan
10.02.2011 um 23:31 Uhr
Noch als Hinweis zu "MoveFolder": Das Verschieben auf ein anderes Laufwerk (nur falls Du's mal brauchen solltest) wird > (nach meinen Erfahrungswerten) damit nicht klappen ...
..dafür könnte man ja "MoveHere" benutzen.
nur falls es interessiert. bastla weiß soetwas sowieso

Gruss
Tsuki
Bitte warten ..
Mitglied: bastla
10.02.2011, aktualisiert 18.10.2012
Hallo Tsuki!

Schön, Dich wieder mal zu lesen ...
bastla weiß soetwas sowieso
Das ist jetzt aber einer Unterstellung (wahrscheinlich nur, weil ich die Tage mal ein "CopyHere" ausgegraben habe) ...

Danke jedenfalls für die Ergänzung.

Grüße
bastla
Bitte warten ..
Mitglied: reni09
11.02.2011 um 12:25 Uhr
Zitat von bastla:
Noch als Hinweis zu "MoveFolder": Das Verschieben auf ein anderes Laufwerk (nur falls Du's mal brauchen
solltest) wird (nach meinen Erfahrungswerten) damit nicht klappen ...

Der Hinweis ist mehr als gut, denn genau so etwas hab ich vor (von D:\ nach %USERPROFILE%)
Ok, so muss ich mir also dieses "MoveHere" anschaun oder aber meine Quellen auf C:\ legen.

Ähm ... wie ist's mit "objFSO.CopyFolder"? Kann man das von einem LW auf das andere LW anwenden?

Auf jeden Fall schonmal 1000Dank für die Tipps
Gruß reni
Bitte warten ..
Mitglied: bastla
11.02.2011 um 18:53 Uhr
Hallo reni09!
Ähm ... wie ist's mit "objFSO.CopyFolder"? Kann man das von einem LW auf das andere LW anwenden?
Magst Du das denn nicht selbst testen?
Das Verschieben würde jedenfalls etwa so aussehen:
01.
Set App = CreateObject("Shell.Application") 
02.
App.Namespace(strDstFld).MoveHere App.Namespace(strSrcFld).Items.Item
Wenn Du ".Item" weglässt, werden die nur die Ordnerinhalte unmittelbar in den Zielordner (muss bereits existieren) verschoben ...

Grüße
bastla
Bitte warten ..
Mitglied: reni09
11.02.2011 um 19:28 Uhr
Zitat von bastla:
Hallo reni09!
> Ähm ... wie ist's mit "objFSO.CopyFolder"? Kann man das von einem LW auf das andere LW anwenden?
Magst Du das denn nicht selbst testen?

Sorry ... da hast du natürlich recht! Werd ich tun!
Das muss dann bis nächsten MI warten, denn hier hab ich nur XP in einer VM und da gibts nur C:\

----
Das Verschieben würde jedenfalls etwa so aussehen:
01.
Set App = CreateObject("Shell.Application") 
02.
> App.Namespace(strDstFld).MoveHere App.Namespace(strSrcFld).Items.Item 
03.
> 
Wenn Du ".Item" weglässt, werden die nur die Ordnerinhalte unmittelbar in den Zielordner
(muss bereits existieren) verschoben ...

Das schaut ja gar nicht sooo schlimm aus *freu*
Auch das werde ich dann ab nächsten Mittwoch testen.

Vielen vielen Dank bastla!!
Und ich setz den Thread nun auch auf gelöst.

Schönes WE
Bitte warten ..
Mitglied: bastla
11.02.2011 um 19:33 Uhr
Hallo reni09!

Ich will Dich ja nicht um die Wochenendruhe bringen, aber
hier hab ich nur XP in einer VM und da gibts nur C:\
kann ich eigentlich nicht gelten lassen - VHD sind ja nicht so teuer , dass Du der VM nicht noch ein oder 2 Stück davon einbauen könntest ...

(Trotzdem ) auch Dir ein schönes WE
bastla
Bitte warten ..
Mitglied: reni09
11.02.2011 um 22:35 Uhr
Zitat von bastla:
kann ich eigentlich nicht gelten lassen - VHD sind ja nicht so teuer , dass Du der VM nicht noch ein oder 2 Stück davon
einbauen könntest ...

ja schon, aber Windows bekommt bei mir @HOME wirklich nur soviel Platz, wie es unbedingt sein muss.
Linux rocks *gg*
Aber ich setz mich Montag (im Urlaub ) noch mal dran.

Gruß reni
Bitte warten ..
Mitglied: reni09
16.02.2011 um 15:25 Uhr
Hallo und nochmals 1000Dank !!

Ich melde mich nur noch einmal, um meine Endlösung vorzustellen
01.
Option Explicit 
02.
Dim objFSO, objFolder, strSrcFld, strDstFld 
03.
 
04.
strSrcFld = "C:\temp\" & CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERNAME%") & "\ipos" 
05.
strDstFld = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERPROFILE%") & "\ipos" 
06.
 
07.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
08.
 
09.
If Not objFSO.FolderExists(strDstFld) Then 
10.
   objFSO.MoveFolder strSrcFld, strDstFld 
11.
End If 
12.
 
13.
Set objFSO = Nothing
So tut es nun das, was ich will und im weiteren Verlauf des Scripts wird die eigentliche App gestartet.

Gruß reni
Bitte warten ..
Mitglied: bastla
16.02.2011 um 15:33 Uhr
Hallo reni09!

Freut mich, dass es jetzt passt ...

Grüße
bastla

P.S.: Da Du ohnehin schon ein paar längere Zeilen dabei hast, könntest Du 9 bis 11 noch zu
If Not objFSO.FolderExists(strDstFld) Then objFSO.MoveFolder strSrcFld, strDstFld
zusammenfassen ...
Bitte warten ..
Mitglied: reni09
16.02.2011 um 21:18 Uhr
Ahhh ... supi Tipp

Danke und Gruß
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...