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

Alle Dateien löschen, die nicht in Textdatei stehen

Frage Entwicklung Batch & Shell

Mitglied: watchdogg

watchdogg (Level 1) - Jetzt verbinden

04.06.2009, aktualisiert 09:38 Uhr, 5419 Aufrufe, 5 Kommentare

Hallo Leute,

wie der Titel schon sagt, möchte ich gern alle Dateien in einem Verzeichnis löschen, welche nicht in der Textdatei aufgelistet sind.

Hier gibt es ja schon eine gute Lösung:

http://www.administrator.de/index.php?content=46770

Es ist nur so:

In der Textdatei stehen aktuelle Dateien, d.h.
es greifen andere User auf diese Dateien, die in der Textdatei stehen zu.
Ich kann diese also nicht verschieben, so wie es im angegebenen Beitrag steht.

Meine Frage ist nun, kann ich die Dateien die NICHT in der Textdatei stehen irgendwie direkt verschieben, ohne die anderen Dateien temporär zu verschieben?

Vielen Dank,

Mit freundlichen Grüßen watchdogg
Mitglied: LotPings
04.06.2009 um 10:22 Uhr
Hallo watchdogg,

versuchs mal hiermit (Es ist Unklar ob du jetzt löschen oder verschieben willst)

01.
@Echo off 
02.
Set "Base=C:\Test\Löschen" 
03.
Set "Dest=C:\Test\Verschieben\" 
04.
Set "Ausnahmen=C:\Test\Ausnahmen.txt" 
05.
Pushd "%Base%" 
06.
For /F "Delims=" %%A in ( 
07.
  'Dir /B * ^|Findstr /V /I /G:"%Ausnahmen%" ' 
08.
    ) Do Echo DEL/Move %%A "%Dest%" 
09.
POPD
Ungetestet, den DO Teil kannst du wenn die Ausgabe per Echo passt entsprechend anpassen.

Gruß
LotPings
Bitte warten ..
Mitglied: watchdogg
04.06.2009 um 15:07 Uhr
@LotPings

1000 Dank erstmal,

funktioniert super, nur noch ein kleineres Manko:
Wenn in der "Ausnahmen.txt" beispielsweise:
bla
blubb
steht.
Dann würde er alle Dateien, die diese Zeichenkette im Dateinamen beinhalten,
Also beispielsweise:
bla
blubb
xblubb
blase
blackout
blubberei
...und andere äußerst sinnfreie zeichenketten...
nicht verschieben.
Besser wäre es wenn er nur:
bla
blubb
stehen lassen würde.

Habe es schon mit der findstr - Option c: probiert. Bisher jedoch ohne Erfolg.

Mit freundlichen Grüßen watchdogg
Bitte warten ..
Mitglied: LotPings
04.06.2009 um 16:33 Uhr
Deine sinnfreien Beispiele helfen mir nicht weiter,
wie erstellst du denn die Ausnahmen?

Wenn die Dateinamen vol übereinstimmen müssen, setze in die Ausnahmen Datei ein
^vor und hinter die Namen ein $

Das sind RegEx Anker für Zeilenanfang und -ende.

Gruß
LotPings
Bitte warten ..
Mitglied: watchdogg
05.06.2009 um 07:37 Uhr
Hab das mit den RegEx Ankern so gelöst:


01.
@echo off 
02.
for /f %%i in (quelle.txt) do echo ^%%i$>>ziel.txt

Und dann deinen oberen Code verwendet --> klappt wunderbar.

Ich danke dir wie verrückt LotPings.
Bitte warten ..
Mitglied: LotPings
05.06.2009 um 09:16 Uhr
Freut mich wenns klappt watchdogg.

Wäre auch schön wenn du den Beitrag auf gelöst setzen würdest.

Gruß
LotPings
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Entwicklung
Versteckte .(Punkt)Dateien löschen (3)

Frage von DarkJM zum Thema Entwicklung ...

Batch & Shell
gelöst Powershell ältere Dateien löschen (6)

Frage von Cougar77 zum Thema Batch & Shell ...

Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...