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

Frage Entwicklung Batch & Shell

GELÖST

Batch eine Datei auf dem ganzen Computer suchen und löschen

Mitglied: Motorcross

Motorcross (Level 1) - Jetzt verbinden

30.01.2010 um 19:37 Uhr, 7480 Aufrufe, 10 Kommentare

Hallo Administratoren

ich bin gerade dabei einen Scribt in Batch zu programmieren, der eine Datei überall suchen soll also auch alle Festplatten durchsuchen soll.
Ich hab es schon mit del /s "C:\test.txt" versucht. baer dort muss man den Laufwerkbuchstaben angeben gibt es noch eine andere möglichkeit?
Gruß Motorcross
Mitglied: AndreasBrecht
30.01.2010 um 20:04 Uhr
in VB script:
01.
  Dim drv , Laufwerksbuchstabe  
02.
  Dim fs, sh 
03.
  Set fs = CreateObject ("scripting.FileSystemObject") 
04.
   Set sh= CreateObject ("WScript.Shel") 
05.
   
06.
  For Each drv In fso.Drives 
07.
   Laufwerksbuchstabe = drv.DriveLetter 
08.
   sh.run "%COMSPEC% /C del /s" &  Laufwerksbuchstabe & ":\Test.txt" 
09.
  Next drv
Wer (wie ich eigentlich auch) die Syntax für den DOS Befehl etwas obskur fidet, kann natürlich auch rekursiv jeden Ordner nach der Datei durchsuchen. Das dauert aber schon mal was länger....
Bitte warten ..
Mitglied: Motorcross
30.01.2010 um 20:11 Uhr
Kann man das auch in Batch bekommen?
Bitte warten ..
Mitglied: StefanKittel
30.01.2010 um 20:26 Uhr
da müssen wir nur kurz warten bis bastla vorbeischaut. Der muss dafür nicht nachdenken.
Bitte warten ..
Mitglied: AndreasBrecht
30.01.2010 um 20:29 Uhr
cscript.exe nimmt als Parameter die auszuführende Scriptdatei
Bitte warten ..
Mitglied: bastla
30.01.2010 um 20:33 Uhr
Hallo Motorcross!
Kann man das auch in Batch bekommen?
Aber sicher :
01.
@echo off & setlocal 
02.
set "Datei=Test.txt" 
03.
 
04.
set "G=%temp%\GetDrives.vbs" 
05.
>"%G%" echo For Each D In CreateObject ("scripting.FileSystemObject").Drives:If D.DriveType=2 And D.IsReady Then:WScript.Echo D:End If:Next 
06.
for /f %%i in ('cscript //nologo "%G%"') do echo del /s "%%i\%Datei%" 
07.
del "%G%"
Solange das "echo" vor dem "del" steht, wird das Löschen (durch Anzeige des entsprechenden Befehles) nur simuliert ...

Grüße
bastla

[Edit] Einschränkung auf "Festplatten" nachgereicht ... [/Edit]

[Edit 2]
@StefanKittel
da müssen wir nur kurz warten bis bastla vorbeischaut
Woher wusstest Du?
[/Edit 2]
Bitte warten ..
Mitglied: Biber
30.01.2010 um 21:44 Uhr
Moin Motorcross

so halb off topic, weil grundsätzlich nichts gegen die Ansätze von AndreasBrecht, StefanKittel und bastla zu sagen ist, noch ein paar kleine Anmerkungen
Zitat von Motorcross:
... , der eine Datei überall suchen soll also auch alle Festplatten durchsuchen soll.
Ich hab es schon mit del /s "C:\test.txt" versucht. baer dort muss man den Laufwerkbuchstaben angeben
gibt es noch eine andere möglichkeit?
Dann versuchen wir doch mal, uns doch die Kirche bzw. Moschee im Dorf zu lassen.
Wenn du irgendwo ein Skript losjagst, das auf allen vorhandenen Festplatten rumrödeln und dort ungefragt/ohne Benutzer-Sicherheitsrückfrage irgendetwas löscht, dann kann es nur ein Skript a) von dir und b) für deinen eigenen Rechner sein.
Kann nicht anders sein.
Wenn es aber so ist, dann ist das Abklappern der "Drives" und Prüfen auf Festplatten/Aussortieren der CDROMs und Ramdisks pilpul ... du weißt doch, ob und welche Laufwrksbuchstaben du hast auf deinem Rechner.

Und wenn du das weißt, dann kannst du auch das ja schon ausprobierte "del /s C:\text.txt" in eine FOR-Anweisung laufen lassen.
Beispiel vom CMD-Prompt
01.
FOR %i IN (c d e f) DO del /s /q %i:\test.txt
... das würde auf den Laufwerken C:, D:, E: und F: die Datei test.txt in allen Unterordnern suchen und wegbürsten.
Im Batch sollten dann jeweils zwei Prozentzeichen vor die Laufvariable %i (also %%i).

Vorteile:
- Der Code ist einfach, wartbar und transparent
- und: es ist IMMER langsamer, Rekursivität "nachzuprogrammieren" mit Skript/Interpreter-Heimwerkerwerkzeugen als wenn du bereits in Hochsprachen oder Assembler implementierte Funktionen nutzt.
Und die CMD-Befehle DIR /DEL, XCopy, FindStr und andere kennen halt diesen Schalter /s.. das ist immer schneller als irgendwas nachgeturntes.

Güße
Biber
Bitte warten ..
Mitglied: Motorcross
31.01.2010 um 10:14 Uhr
Ja, vielen Dank für eure Hilfe!
Gruß Motorcross
Bitte warten ..
Mitglied: AndreasBrecht
31.01.2010 um 11:49 Uhr
Sorry Biber ohne Deinen Ansatz schlechtreden zu wollen, und Du natürlich sowieso recht hast mit Deinem Argument, dass schon manchmal die Große Script Kanone ausgepackt wird, nur weil keiner mehr weiß, wie man eine Batch schreibt,, hat Dein Ansatz nicht nur Vorteile sonder auch Nachteile:

- der Code muss gewartet werden (auch wenn das einfach gehen mag), wenn sich etwas ändert
- sieht für mich VB script (oder meintewegen auch J script) lesbarer und transparenter aus als Deine Alternative

und dass del/s schneller ist als ein vergleichbares For Next Kostrukt habe ich sowieso bereits (wenn auch vlt nicht gründlich genug) deutlich gemacht.
Bitte warten ..
Mitglied: bastla
31.01.2010 um 13:33 Uhr
@AndreasBrecht
sieht für mich VB script (oder meintewegen auch J script) lesbarer und transparenter aus als Deine Alternative
So im direkten Vergleich (nur mal) Deiner Zeile 6 mit Bibers Oneliner wäre darauf vielleicht nicht jede/r gekommen ...

... und wenn Du die Zeile 6 (unabhängig von der Frage der Performance) tatsächlich durch VBS-Code ersetzen wolltest, wäre die dafür zu verwendende Rekursion mE im Vergleich zu der einen Batch-Zeile auch nicht lesbarer ...

@Biber
Der Hinweis auf "del /s" ist berechtigt - allerdings wird diese Variante ohnehin in allen Ansätzen verwendet; die "For-Next"-Schleife dient ja nur dem Abarbeiten aller Festplattenlaufwerke ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
01.02.2010 um 10:55 Uhr
Moin AndreasBrecht und bastla,

nur der Vollständigkeit halber und weil natürlich euer Feedback ebenfalls eine Rückmeldung verdient

@AndreasBrecht
Zitat von AndreasBrecht:
... hat Dein Ansatz nicht nur Vorteile sonder auch Nachteile:

- der Code muss gewartet werden (auch wenn das einfach gehen mag), wenn sich etwas ändert
Ja, das stimmt. Allerdings bietet meine Halbzeile dem Überall-Löscher auch noch die Möglichkeit, nur gezielt auf den Platten D:, E: und G: zu löschen und eben nicht stumpf abzuprüfen "isses Festplatte? Wenn ja, dann such ma'".

@bastla
Der Hinweis auf "del /s" ist berechtigt - allerdings wird diese Variante ohnehin in allen Ansätzen verwendet; die "For-Next"-Schleife dient ja nur dem Abarbeiten aller Festplattenlaufwerk
Jepp, ist mir ja nicht entgangen.
Nur ist IMHO diese Festplatten-Ermittel-Ummantelung überflüssig - eben weil hier nichts ermittelt werden muss.
Wir hatten doch hier schon ein- oder zweimal Threads mit dem Ziel "Es sollen bei beliebigen Rechnern alle Festplatten durchsucht werden nach einer Outlook.pst (oder allen *.mp3s oder allen desktop.inis)". Und da sehe ich es auch ein, dass erstmal alle Festplatten ermitteln werden sollten und dazu VBS/JS verwendet wird. keine Frage.
Aber hier, wenn ich die aus meiner Sicht unnötigen Schnörkel weglasse, dann bleibt über, dass in einer VBS-For Each-Schleife der interne CMD-Befehl "dir /s" aufgerufen wird.

Darauf bezog sich meine "Hallo?!? Wollt ihr mal kurz zwei Schritte zurücktreten und nochmal draufgucken?"-Frage.

War aber mehr als Fussnote und nicht als Kritik gedacht.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch datei zum duplikate löschen
gelöst Frage von M4xx-oneBatch & Shell5 Kommentare

Hallo Gemeinde ich hab ein problem ich möchte mittels batchdatei eine TXT datei aufräumen die datei hat folgende eintäge ...

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

Batch & Shell
Neueste Datei mit Batch suchen
gelöst Frage von thilo-55Batch & Shell4 Kommentare

Ein herzliches Hallo an die Teilnehmer des Forums. Leider komme ich mit meinen batch/dos-Kenntnissen nicht mehr weiter. Evtl. kann ...

Batch & Shell
Batch zum suchen und verschieben von Dateien
gelöst Frage von zeroblue2005Batch & Shell5 Kommentare

Guten Tag Zusammen, ich benötige eine Batch, die folgendes kann: 1. Suche in bestimmten Dateipfad nach nach Dateien eines ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 3 TagenSicherheit12 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall10 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS9 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen9 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...

Windows Netzwerk
Zugriff auf den Desktop Ordner eines anderen Rechners in der gleichen Domäne
gelöst Frage von JensNomaWindows Netzwerk6 Kommentare

Guten Abend, ich war neulich mit unserem Admin am Tisch gesessen. Er an seinem Notebook angemeldet mit dem Domänen-Admin, ...