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

Per Batch nach neuen Ordnern suchen

Frage Entwicklung Batch & Shell

Mitglied: dhdesignz

dhdesignz (Level 1) - Jetzt verbinden

21.09.2010, aktualisiert 18:50 Uhr, 3062 Aufrufe, 9 Kommentare

Ich habe folgendes Problem.

Ich möchte eine Batch schreiben mit der ich nach bestimmten Ordnern suchen kann, die eventuell neu angelegt worden sind.

Z.b.: Es existiert ein Ordner A. In diesem Ordner sind die Ordner A1, A2 und A3. Diese drei Ordner haben Unterordner, die aber nicht ausgwertet werden müssen.

Es soll nun mit der Batch überprüft werden ob eventuell ein Ordner A4, A5... angelegt worden ist. Wenn ja soll dies in einer txt gespeichert werden. In diesem Beispiel gehen wir davon aus das Ordner A4 und A5 neu angelegt worden sind. Diese stehen nun in der txt. Vielleicht sogar mit Pfandangabe?

Beim nächsten Scan soll nur noch nach den Ordner neuer als A5 gesucht werden und wiederrum das Ergebnis ist die txt überschrieben werden.

Es geht darum zu überprüfen wechle Ordner neu angelegt worden sind und vorallem wann.

Ich hoffe jemand kann mir helfen.

Habe einige Sachen gefunden, aber nicht das was ich leider benötige.

Gruß
Dorian
Mitglied: bastla
21.09.2010 um 18:01 Uhr
Hallo dhdesignz und willkommen im Forum!

Du könntest es so versuchen:
01.
@echo off & setlocal 
02.
set "Ordner=D:\A" 
03.
set "Liste=%Ordner%\Ordnerliste.txt" 
04.
set "Neue=%Ordner%\Neu.txt" 
05.
 
06.
pushd "%Ordner%" 
07.
del "%Neue%" 2>nul 
08.
if not exist "%Liste%" type nul>"%Liste%" 
09.
for /f "delims=" %%i in ('dir /b /ad^|findstr /i /v /g:"%Liste%"') do for /f "tokens=1-2" %%a in ('dir /tc "%%i"^|findstr /c:"\.\."') do ( 
10.
    >>"%Neue%" echo %%a %%b %%i 
11.
    >>"%Liste%" echo %%i 
12.
13.
popd
Beim ersten Durchlauf wird im vorgegebenen Ordner lt Zeile 2 die Datei "Ordnerliste.txt" erzeugt und bei weiteren Batchläufen ergänzt. In "Neu.txt" (ebenfalls in diesem Ordner) stehen dann jeweils die Namen der neuen Ordner samt Erstellungsdatum (nach dem ersten Durchlauf natürlich alle zu diesem Zeitpunkt vorhandenen Ordner).

Es werden in dieser Version nur Ordner erfasst, die es vorher noch nicht gab - wurde also etwa A3 gelöscht und später wieder angelegt, wird dies nicht erkannt. Falls immer nur gegenüber dem vorigen Batchlauf verglichen werden soll, müsste die Zeile 11 entfernt und vor dem "popd" eine Zeile
>"%Liste%" dir /b /ad
eingefügt werden.

Grüße
bastla
Bitte warten ..
Mitglied: dhdesignz
21.09.2010 um 18:29 Uhr
Super. Danke. Werde das gleich ausprobieren. Ist es möglich eine Batch automatisiert auszuführen?
Bitte warten ..
Mitglied: bastla
21.09.2010 um 18:34 Uhr
Hallo dhdesignz!
Ist es möglich eine Batch automatisiert auszuführen?
Du meinst, so wie andere Geplante Tasks?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
21.09.2010 um 18:35 Uhr
[OT]
Moin dhdesignz,
willkommen im Forum.

Zitat von dhdesignz:
...
einer txt gespeichert werden. In diesem Beispiel gehen wir davon aus das Ordner A4 und A5 neu angelegt worden sind.
Diese stehen nun in der txt. Vielleicht sogar mit Pfandangabe?
Das wird sehr,sehr kniffelig...
Welchen Wert sollen wir denn bei Einweg-Ordnern ansetzen?
Soll die Pfand-Ordnerrückgabe auch mit native Batch realisiert werden oder dürfen wir da auf eine höhere Programmiersprachen ausweichen?
Bätches sind nicht so geeignet zum Pfandbon-Drucken...

Aber sonst: eine der wohlformuliertesten Fragestellungen seit langem. Respekt.

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: dhdesignz
21.09.2010 um 18:49 Uhr
Zitat von Biber:
[OT]
Moin dhdesignz,
willkommen im Forum.

> Zitat von dhdesignz:
> ----
> ...
> einer txt gespeichert werden. In diesem Beispiel gehen wir davon aus das Ordner A4 und A5 neu angelegt worden sind.
> Diese stehen nun in der txt. Vielleicht sogar mit Pfandangabe?
Das wird sehr,sehr kniffelig...
Welchen Wert sollen wir denn bei Einweg-Ordnern ansetzen?
Soll die Pfand-Ordnerrückgabe auch mit native Batch realisiert werden oder dürfen wir da auf eine höhere
Programmiersprachen ausweichen?
Bätches sind nicht so geeignet zum Pfandbon-Drucken...

Aber sonst: eine der wohlformuliertesten Fragestellungen seit langem. Respekt.

Grüße
Biber
[/OT]

Bin selber leider nicht sehr versiert im Umgang mit Programmiersprachen. Es muss keine Batch sein. Dachte aber das dies die einfachste Lösung wäre.

Was meinst du mit: "Welchen Wert sollen wir denn bei Einweg-Ordnern ansetzen?"
Bitte warten ..
Mitglied: dhdesignz
21.09.2010 um 18:57 Uhr
Zitat von bastla:
Hallo dhdesignz und willkommen im Forum!

Du könntest es so versuchen:
01.
@echo off & setlocal 
02.
> set "Ordner=D:\A" 
03.
> set "Liste=%Ordner%\Ordnerliste.txt" 
04.
> set "Neue=%Ordner%\Neu.txt" 
05.
>  
06.
> pushd "%Ordner%" 
07.
> del "%Neue%" 2>nul 
08.
> if not exist "%Liste%" type nul>"%Liste%" 
09.
> for /f "delims=" %%i in ('dir /b /ad^|findstr /i /v /g:"%Liste%"') do for /f "tokens=1-2" 
10.
> %%a in ('dir /tc "%%i"^|findstr /c:"\.\."') do ( 
11.
>     >>"%Neue%" echo %%a %%b %%i 
12.
>     >>"%Liste%" echo %%i 
13.
> ) 
14.
> popd 
15.
> 
Beim ersten Durchlauf wird im vorgegebenen Ordner lt Zeile 2 die Datei "Ordnerliste.txt" erzeugt und bei weiteren
Batchläufen ergänzt. In "Neu.txt" (ebenfalls in diesem Ordner) stehen dann jeweils die Namen der neuen Ordner
samt Erstellungsdatum (nach dem ersten Durchlauf natürlich alle zu diesem Zeitpunkt vorhandenen Ordner).

Es werden in dieser Version nur Ordner erfasst, die es vorher noch nicht gab - wurde also etwa A3 gelöscht und später
wieder angelegt, wird dies nicht erkannt. Falls immer nur gegenüber dem vorigen Batchlauf verglichen werden soll, müsste
die Zeile 11 entfernt und vor dem "popd" eine Zeile
>"%Liste%" dir /b /ad 
> 
eingefügt werden.

Grüße
bastla
Bitte warten ..
Mitglied: dhdesignz
21.09.2010 um 19:02 Uhr
Leider funktioniert der Code nicht bei mir. Habe Testweise der Ordner A auf der Partition C: angelegt. Darin enthalten die Ordner A1, A2 und A3. Nach ausführen der Bat wird die Ordnerliste.txt erstellt, die aber leider leer bleibt. Nachdem ich weitere Ordner erstellt habe und die Bat erneut ausgeführt habe wurde die Neu.txt nicht angelegt. Die Ordnerliste.txt blieb leider weiterhin leer. Woran könnte es liegen? Könnte es an meinem 64Bit Windows 7 liegen?

Gruß
Dorian
Bitte warten ..
Mitglied: bastla
21.09.2010 um 20:04 Uhr
Hallo dhdesignz!
Könnte es an meinem 64Bit Windows 7 liegen?
Leider nicht daran, sondern am Batch ; so sollte es besser gehen:
01.
@echo off & setlocal 
02.
set "Ordner=C:\A" 
03.
set "Liste=%Ordner%\Ordnerliste.txt" 
04.
set "Neue=%Ordner%\Neu.txt" 
05.
 
06.
pushd "%Ordner%" 
07.
del "%Neue%" 2>nul 
08.
if not exist "%Liste%" >"%Liste%" dir /b /ad 
09.
for /f "delims=" %%i in ('dir /b /ad^|findstr /i /v /g:"%Liste%"') do for /f "tokens=1-2" %%a in ('dir /tc "%%i"^|findstr /c:"\.\."') do ( 
10.
    >>"%Neue%" echo %%a %%b %%i 
11.
    >>"%Liste%" echo %%i 
12.
13.
popd 
14.
if exist "%Neue%" echo Neue Ordner: & type "%Neue%"
Es wird jetzt beim ersten Batchlauf nur die Ordnerliste (bitte die bereits vorhandene "Ordnerliste.txt" vorweg löschen), nicht aber eine Datei "Neu.txt" erstellt. Auch bei nachfolgenden Läufen wird die Datei "Neu.txt" nur entstehen, wenn tatsächlich neue Ordner gefunden wurden - lässt sich so dann auch leichter weiterverarbeiten ...

Grüße
bastla
Bitte warten ..
Mitglied: dhdesignz
21.09.2010 um 20:16 Uhr
Super. Funktionier 1A. Mal schauen was ich nun noch alles hinzufügen kann.
Mal probieren ob ich es schaffe, dass Ergebnis per Email zu verschicken.

Ist eine super Seite hier. Kompetent und hilfreich.

Allen einen schönen Abend.
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Batch & Shell
gelöst Per Batch Konfliktdateien in Dropbox suchen (4)

Frage von nobbi49 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 ...