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

Frage Entwicklung VB for Applications

Mitglied: halo7one

halo7one (Level 1) - Jetzt verbinden

30.03.2008, aktualisiert 01.04.2008, 9398 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
VB for Applications
VBS oder Batch um eine Datei in Unterordner zu verschieben
Frage von MrRoyalVB for Applications1 Kommentar

Hallo zusammen, ich bin neu hier und kenne mich leider im Bereich VBS und Batch nicht so gut aus. ...

VB for Applications
VBA - VBS : Umbennen und Verschieben von Dateien in Loop
gelöst Frage von E.WindVB for Applications4 Kommentare

Hallo zusammen, folgende Situation habe ich: Warenwirtschaftssystem erzeugt eine sog. Pollingdatei für DHL Easylog, bisher war es so, das ...

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

Batch & Shell
Batch Datei zum löschen des Papierkorbes
Frage von Munin92Batch & Shell3 Kommentare

Guten Abend liebe Community, ich hoffe das ich in diesem Forum für diese Frage richtig bin. Und zwar habe ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 5 StundenBatch & Shell7 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 7 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 22 StundenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 23 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Windows Server
Sichere Remote Desktop Verbindung wie?
gelöst Frage von nuss33Windows Server11 Kommentare

Hallo zusammen, eins vorweg: Ich besitze einen privaten Windows Server 2008 R2 zu Hause im Netzwerk er wird nicht ...