dhdesignz
Goto Top

Per Batch nach neuen Ordnern suchen

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

Content-Key: 151478

Url: https://administrator.de/contentid/151478

Printed on: April 20, 2024 at 16:04 o'clock

Member: bastla
bastla Sep 21, 2010 at 16:01:20 (UTC)
Goto Top
Hallo dhdesignz und willkommen im Forum!

Du könntest es so versuchen:
@echo off & setlocal
set "Ordner=D:\A"  
set "Liste=%Ordner%\Ordnerliste.txt"  
set "Neue=%Ordner%\Neu.txt"  

pushd "%Ordner%"  
del "%Neue%" 2>nul  
if not exist "%Liste%" type nul>"%Liste%"  
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 (  
    >>"%Neue%" echo %%a %%b %%i  
    >>"%Liste%" echo %%i  
)
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
Member: dhdesignz
dhdesignz Sep 21, 2010 at 16:29:07 (UTC)
Goto Top
Super. Danke. Werde das gleich ausprobieren. Ist es möglich eine Batch automatisiert auszuführen?
Member: bastla
bastla Sep 21, 2010 at 16:34:30 (UTC)
Goto Top
Hallo dhdesignz!
Ist es möglich eine Batch automatisiert auszuführen?
Du meinst, so wie andere Geplante Tasks?

Grüße
bastla
Member: Biber
Biber Sep 21, 2010 at 16:35:32 (UTC)
Goto Top
[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]
Member: dhdesignz
dhdesignz Sep 21, 2010 at 16:49:39 (UTC)
Goto Top
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?"
Member: dhdesignz
dhdesignz Sep 21, 2010 at 16:57:29 (UTC)
Goto Top
Zitat von @bastla:
Hallo dhdesignz und willkommen im Forum!

Du könntest es so versuchen:
@echo off & setlocal
> set "Ordner=D:\A"  
> set "Liste=%Ordner%\Ordnerliste.txt"  
> set "Neue=%Ordner%\Neu.txt"  
> 
> pushd "%Ordner%"  
> del "%Neue%" 2>nul  
> if not exist "%Liste%" type nul>"%Liste%"  
> 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 (  
>     >>"%Neue%" echo %%a %%b %%i  
>     >>"%Liste%" echo %%i  
> )
> 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
Member: dhdesignz
dhdesignz Sep 21, 2010 at 17:02:07 (UTC)
Goto Top
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
Member: bastla
bastla Sep 21, 2010 at 18:04:29 (UTC)
Goto Top
Hallo dhdesignz!
Könnte es an meinem 64Bit Windows 7 liegen?
Leider nicht daran, sondern am Batch face-sad; so sollte es besser gehen:
@echo off & setlocal
set "Ordner=C:\A"  
set "Liste=%Ordner%\Ordnerliste.txt"  
set "Neue=%Ordner%\Neu.txt"  

pushd "%Ordner%"  
del "%Neue%" 2>nul  
if not exist "%Liste%" >"%Liste%" dir /b /ad  
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 (  
    >>"%Neue%" echo %%a %%b %%i  
    >>"%Liste%" echo %%i  
)
popd
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
Member: dhdesignz
dhdesignz Sep 21, 2010 at 18:16:23 (UTC)
Goto Top
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.