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

Batch-File Verzeichnis von Suche ausschließen

Frage Entwicklung Batch & Shell

Mitglied: freel0rd

freel0rd (Level 1) - Jetzt verbinden

28.08.2009, aktualisiert 11:02 Uhr, 6581 Aufrufe, 5 Kommentare

Hallo zusammen,
zunächst muss ich sagen, dass das hier wirklich eine super Plattform ist, die mir schon das ein oder andere Mal weitergeholfen hat!

Zu meinem Problem:

Ich habe ein Batch-Skript erstellt, welches auf einem Rechner alle Verzeichnisse mit Unterverzeichnissen bestimmten Dateien durchsucht. Durchsucht wird dabei die komplette Platte C:\, was auch so gewollt ist. Um die Performance zu erhöhen, würde ich aber gerne das komplette Verzeichnis C:\Windows von der Suche ausschließen.

Bevor ich in meine Suchschleife gehe, habe ich mit
01.
set dir=c:\
mein Suchverzeichnis definiert. Wie kann ich nun meine Suche dahingehend einschränken, dass C:\Windows davon ausgenommen wird? Leider konnte ich da nichts passendes finden.

Vielen Dank schonmal für Eure Hilfe!

Viele Grüße,
freel0rd
Mitglied: Biber
28.08.2009 um 11:17 Uhr
Moin freel0rd,

willkommen im Forum.
Zitat von freel0rd:
Ich habe ein Batch-Skript erstellt, welches auf einem Rechner alle Verzeichnisse mit Unterverzeichnissen bestimmten Dateien durchsucht.
Zeich doch ma!

Bevor ich in meine Suchschleife gehe, habe ich mit
01.
set dir=c:\
mein Suchverzeichnis definiert.
Aahhh - ist das diese Zeile 8, in der Suchschleife anfängt? *Glaskugel putz*

Menno - wir beantworten ja nun wirklich gerne Fragen zu Skripten.
Aber das geht doch besser, wenn wir wissen worum es geht.

Bitte poste das komplette Fragment.

Grüße
Biber
Bitte warten ..
Mitglied: freel0rd
28.08.2009 um 11:35 Uhr
Sorry, mein Fehler.
Hier der vollständige Code. Ist bisher nur im Teststadium, es ist noch eine Prüfung drin, ob das .pst-File mehr als 1 MB hat. Es geht mir wie gesagt nur darum, C:\Windows von der Suche auszunehmen, weil dadurch die Performance leidet.

01.
@echo off 
02.
 
03.
set dir=c:\ 
04.
set file=*.pst 
05.
set size=%%~zp 
06.
 
07.
REM ====SUCHE NACH .PST FILES ÜBER 1MB AUF C:\======= 
08.
:pst 
09.
for /r "%dir%" %%p in ("%file%") do ( 
10.
	if %size% geq 1000000 goto found 
11.
12.
goto end 
13.
 
14.
REM ====.PST-FILE MIT MEHR ALS 1MB GEFUNDEN========== 
15.
:found 
16.
echo %%p >> %systemdrive%\temp\pst.txt 
17.
goto pst 
18.
 
19.
:end 
20.
exit
Bitte warten ..
Mitglied: pieh-ejdsch
28.08.2009 um 13:50 Uhr
Hallo freel0rd,

Hach wo fang ich denn an?


Zeile 09. goto found - machst Du zu: call found "%p"
Zeile 16. echo %%p - funktioniert net in der Subroutine da %%p als For-SchleifenVariable deklariert ist und die For-Schleife in Deiner Zeile 11. mit der schliessenden Klammer beendetet wird und auch hinter diesser schliessenden Klammer kein weiterer Befehl auftaucht. Und es werden nur UmgebungsVariablen und Parameter an Subroutinen Vererbt bzw Weitergegeben. Machst Du aus: %%p - ein: %1 - damit dort der Parameter in die pst.txt reingeschrieben wird.
Zeile 17.mit goto pst - machst Du Dir eine Endlosschleife, welche immer wieder von vorn beginnt und unzählige Forschleifen öffnet. Das ist wiederrum führt dazu dass Deine For-Schleife nie beendet wird. machst Du daraus ein: goto eof
Zeile 12. goto end - schreibst Du als: goto eof
:end und exit kannste weglassen da Batches beim erreichen vom Ende automatisch schliessen bzw diese wird ja mit: goto eof - beendet

Suchts Du nach 1MiB großen Daeteien dann brauchst Du 1048576 als Grössenvergleich das entspricht dem einen MB im Windows.

zum Schluss der einzeiler für die cmd
01.
for /r "c:\" %p in ("*.pst") do @echo "%~dpp" |findstr "C:\Windows">nul||if "%~zp" gtr "1000000" @echo %~p>>%systemdrive%\temp\pst.txt
der Unterordner sollte existieren: %systemdrive%\tmp
eventeuell als Prüfung am beginn in die Batch einbauen.
Bitte warten ..
Mitglied: Biber
28.08.2009 um 15:05 Uhr
Moin freel0rd,

oder zumindest Deine bisherige Zeile 9 ändern, damit die Verzeichnisebene unterhalb von "C:\" Verzeichnis für Verzeichnis geprüft werden kann.

... also eine Außen-FOR/D-Innen-FOR/R-Anweisung:

... 
FOR /D %%p in ("%dir%\*") DO IF  /i "%%~np" NEQ "windows"  Call:FOR_R "%i" 
Goto :eof 
 
:FOR_R Parameter 1 ist das (jeweilige) Start-Directory 
       FOR /F "%~1" %%i in ("%file%") do (  
           .... 
               (wie jetzt) 
...  ) 
Goto :eof
Grüße
Biber
Bitte warten ..
Mitglied: freel0rd
31.08.2009 um 14:38 Uhr
Hallo pieh-ejdsch & Biber,

zunächst einmal herzlichen Dank für eure ausführlichen Antworten. Bin leider bisher nicht dazu gekommen, euren Tips zu folgen, aber ich werde das nachholen.

Viele Grüße,
freel0rd
Bitte warten ..
Ähnliche Inhalte
Suse
gelöst Mehrere Verzeichnisse bei Suche ausschliessen (3)

Frage von Jeduja zum Thema Suse ...

Entwicklung
gelöst Verzeichnise sichern mit batch datei (Win10) (13)

Frage von Limbach zum Thema Entwicklung ...

Batch & Shell
gelöst ( Batch ) Open File or Folder Dialog (5)

Frage von clragon zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
gelöst Raid-Controller (Areca) Datenverlust trotz R5 (16)

Frage von sebastian2608 zum Thema Festplatten, SSD, Raid ...

Server-Hardware
HP ProLiant DL380 G7, POST Error: 1785-Drive Array not Configured (10)

Frage von Paderman zum Thema Server-Hardware ...

Microsoft Office
gelöst Office 365 Pro Domäne einrichten OHNE Webseite (9)

Frage von thklemm zum Thema Microsoft Office ...

Voice over IP
48 Port VOIP Switch mit POE gesucht (8)

Frage von brutzler zum Thema Voice over IP ...