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, 6369 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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
"Generic" Drucker mit batch - File erstellen (6)

Frage von MrPreesident zum Thema Batch & Shell ...

Batch & Shell
gelöst Kl. Frage: Log-File schreiben per Batch (3)

Frage von Yauhun zum Thema Batch & Shell ...

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

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...