Top-Themen

Aktuelle Themen (A bis Z)

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

Datei(en) per VBS in den Papierkorb verschieben

Mitglied: halo7one

halo7one (Level 1) - Jetzt verbinden

30.03.2008, aktualisiert 01.04.2008, 9666 Aufrufe, 3 Kommentare

Hi @ all,
ich möchte mit einem VB-Script mehrere Dateien in den Papierkorb verschieben, damit man sie bequem wiederherstellen kann, falls nötig.
Ich habe diesbezüglich zwar eine Funktion für VB, VBA oder ähnliches gefunden, jedoch nirgens etwas für VBS!

Hier ist die gefundene Funktion für VB: http://www.aboutvb.de/khw/artikel/khwshellkill.htm

Ich hoffe, dass mir jemand eine einen Weg in VBS zeigen kann, bzw. die Funktion umschreiben kann (auch wenn so weit ich weiß ein großer Unterschied zwischen VB und VBScript besteht).

halo7one
Mitglied: bastla
30.03.2008 um 20:05 Uhr
Hallo halo7one!

Der angesprochene Unterschied zeigt sich zB in der Tatsache, dass VBS keine API-Calls durchführen kann - insoferne wird ein Umschreiben etwas schwierig sein.
Alternativ dazu habe ich versucht, den Papierkorb ("Recycle Bin") per "Namespace" anzusprechen - das klappt zwar zB hinsichtlich des Auslesen der Inhalte (Beispiel unten), ein "MoveHere" führt allerdings nicht zum gewünschten Erfolg.

01.
'Papierkorb-Info.vbs
02.
Set objShell = CreateObject("Shell.Application")
03.
Set Papierkorb = objShell.Namespace(10)
04.
 
05.
With Papierkorb
06.
	WScript.Echo "Pfad (ID): " & .Self.Path
07.
	WScript.Echo "Anzahl gelöschter Elemente: " & .Items.Count
08.
	WScript.Echo vbCrLF & "Liste gelöschter Elemente:"
09.
	For Each Element In .Items
10.
		WScript.Echo Element.Name
11.
	Next
12.
End With
Vielleicht findest Du ja in dieser Richtung noch etwas Brauchbares ...
Ein möglicher Weg zum Löschen unter Verwendung des Papierkorbs ist hier (unter der falschen Überschrift "How can I empty the recycle bin?") beschrieben - es wird das Kontextmenü einer Datei (eines Ordners) verwendet, was dann angepasst etwa so aussehen könnte:
01.
If WScript.Arguments.Count > 0 Then
02.
	Set oWinShell = CreateObject("Shell.Application")
03.
	Set oFS = CreateObject("Scripting.FileSystemObject")
04.
 
05.
	If oFS.FileExists(WScript.Arguments(0)) Then
06.
		Set F = oFS.GetFile(WScript.Arguments(0))
07.
	ElseIf oFS.FolderExists(WScript.Arguments(0)) Then
08.
		Set F = oFS.GetFolder(WScript.Arguments(0))
09.
	Else
10.
		WScript.Quit
11.
	End If
12.
	
13.
	Set oSHFolder = oWinShell.Namespace(oFS.GetParentFolderName(F.Path))
14.
	Set oSHFItems = oSHFolder.Items
15.
	Set oSHFItem = oSHFItems.Item(F.Name)
16.
	
17.
	oSHFItem.InvokeVerb("&Löschen")
18.
	
19.
	Set F = Nothing
20.
	Set oWinShell = Nothing
21.
	Set oSHFolder = Nothing
22.
	Set oSHFItems = Nothing
23.
	Set oSHFItem = Nothing
24.
End If
Allerdings ist das vermutlich nicht nur, wenn es um eine größere Anzahl von Dateien geht, kein besonders attraktiver Ansatz (ev könntest Du versuchen, vorweg die im Kontextmenü des Papierkorbes / Register "Global" zu findende Option “Dialog zur Bestätigung des Löschvorgangs anzeigen” über die Registry vorübergehend zu deaktivieren - etwa hier beschrieben, allerdings nicht von mir getestet) ...

Grüße
bastla
Bitte warten ..
Mitglied: misterdemeanor
01.04.2008 um 04:56 Uhr
Hallo halo7one, bastla,

@halo7one
Wie bastla schon bemerkte ist der von Dir erwähnte Lösungsweg ein API-Call und somit nicht aus vbs durchführbar

@bastla
Sehr schönes Workaround! Aber unglaublich das es keine direkte Möglichkeit gibt Dateien in den Pabierkorb zu verschieben.
Hatte jetzt nur halbherzig gegoogled (geht das als neudeutsch durch?)...was ich meine festhalten zu können:
  • Es gibt tatsächlich "ein" richtiges Verzeichnis in welches die gelöschten Dateien vor endgültigem löschen des MFT Records verschoben werden. Dieses ist abhängig von der Windows-Version sowie des Dateisystems (FAT[32] / NTFS) MSDN:How the Recycle Bin Stores Files
  • Nachdem verschieben in dieses Verzeichnis wird die Datei nach einem bestimmten Schema umbenannt. (Siehe Link oben oder hier
  • Im Pabierkorb-Verzeichnis existiert eine Datei namens "INFO2" ("INFO" bei Win95 FAT). Diese Datei hält die Informationen über die "gelöschten" Dateien-->Speicherort vor Löschung, Größe, "Löschdatum" und ID. ID ist hier der Index der Datei im Papierkorb, vergeben wenn Datei im Paierkorb verschoben wurde. Diese Datei sollte der Schlüssel zur Lösung des Problemes sein.
Forensic Analysis of Microsoft Windows Recycle Bin Records by Keith J. Jones

Wenn es also gelingt korrekte INFO2-File Einträge zu erstellen, ist das verschieben und umbenennen der zu "löschenden" Dateien nur noch ein Klacks.
Nötig dazu wären :
  • auf NTFS Volumes die SID des Users
  • den Originalpfad der Datei
  • die Größe der Datei
  • die UTC Zeit des Verschiebevorganges im Windows TIMESTAMP-Format

Das ganze ist sicher nicht trivial, aber theoretisch sollte es möglich sein.
Vielleicht findet sich ja jemand der das ganze gerne erarbeiten möchte.

BG, Felix -misterdemeanor- Bahrenburg
Bitte warten ..
Mitglied: halo7one
01.04.2008 um 17:46 Uhr
!!! Vielen Dank für eure schnellen Antworten & Ideen !!!

@bastla: THX!
Auch wenn dein Vorschlag bei vielen Dateien in verschiedenen Ordnern wirklich zu Problemen führen wird, wird es wohl die einfachste Methode sein und ist somit einen Versuch allemal wert.

@misterdemeanor: TY!
Wenn es jemand schafft, die richtigen Einträge zu generieren, ist dieser Weg allein schon wegen dem direkten Schreiben der Einträge interessant und bei vielen Dateien eindeutig besser,
jedoch muss ich dann wohl auch auf jemanden hoffen, der mehr Ahnung davon hat als ich, was das Programmieren angeht ;)

Falls jemand die "Papierkorb-Einträge" hinbekommt oder noch eine andere Idee hat: HER DAMIT
MfG,
halo7one
Bitte warten ..
Ähnliche Inhalte
Windows 7
Papierkorb Fehler
Frage von pandor777Windows 73 Kommentare

Hallo, bei manchen User bei uns kann der Papierkorb nicht geleert werden, und verweisst auf ein Ordner im Netz. ...

VB for Applications
VBS Datei Auswahl Dialog
gelöst Frage von 133202VB for Applications5 Kommentare

Hallo Ihr, im Thread: konnte ich schon finden, was ich gesucht habe: Jetzt möchte ich allerdings, dass am Anfang ...

VB for Applications
VBS für Timestamp-Datei
gelöst Frage von PascalSchVB for Applications3 Kommentare

Hallo Zusammen, Bin ziemlich neu in der Welt des VBS und habe eine Frage hierzu, die ihr mir hoffentlich ...

Batch & Shell

Text auslesen, falls Name vorhanden, Datei(en) verschieben

gelöst Frage von OOmatrixOOBatch & Shell2 Kommentare

Hallo. Ich lasse mir Informationen von Filmdateien auslesen und in eine Textdatei speichern. Das sieht so aus: Nun hab ...

Neue Wissensbeiträge
Humor (lol)
Administrator.de Perlen
Tipp von DerWindowsFreak2 vor 4 TagenHumor (lol)6 Kommentare

Hallo, Heute beim stöbern auf dieser Seite bin auf folgenden Thread aus dem Jahre 2006 gestossen: Was meint ihr? ...

Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 5 TagenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 8 TageniOS5 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor!
Tipp von Criemo vor 8 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Heiß diskutierte Inhalte
Samba
Windows 10 Client in Samba-Domäne hinzufügen scheitert
Frage von diwaffmSamba31 Kommentare

Hi Leute, ich habe einen Samba Server in der Version 4.9.3 auf einer OpenSuse Maschine laufen. Damit sind momentan ...

Windows Server
Kleine Umfrage: Windows Server Desktop oder Core?
Frage von doomfreakWindows Server22 Kommentare

Hey :) Ich wollte mal eine kleine Umfrage hier starten. Ich bin schon etwas länger auf dieser Seite hier ...

Windows Systemdateien
Verknüpfungen nach Pfadwechsel
Frage von Hendrik2586Windows Systemdateien17 Kommentare

Guten Morgen meine lieben Kollegen und Kolleginnen, ich hab da mal eine Frage die Ihr sicher schon kennt. Es ...

Batch & Shell
CMD-Fenster nach Task schließen
gelöst Frage von Hyperlink.93Batch & Shell16 Kommentare

Hallo, ich habe ein Skript was über einen Task bei jeder User Anmeldung läuft. Der Task startet eine CMD ...