Top-Themen

Aktuelle Themen (A bis Z)

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 Prüfen per Batch ob ein Verzeichnis leer ist

Mitglied: cbli

cbli (Level 1) - Jetzt verbinden

16.11.2006, aktualisiert 17.11.2006, 26510 Aufrufe, 6 Kommentare

Problem:

ich möchte ein bestimmtes existierendes Verzeichnis auf dessen Status abfragen

d.h ob es leer ist oder Dateien enthält.
Unterordner sind keine vorhanden und werden auch nie angelegt.

entsprechend soll dann eine Meldung ausgegeben werden oder/und zu einer anderen Batch gesprungen werden die es z,b dann löscht.
zu berücksichtigen wären lange Dateinamen und Leerzeichen im Verzeichnispfad.
Habe hier im Board schon eine Suche gemacht und auch einen Thread gefunden ,der aber schon geschlossen ist.
Ich habe aus diesem Thread die Lösung übernommen,die entsprechenden Pfade ersetzt bekomme aber immer die gleiche Meldung egal ob das Verzeichnis leer ist oder nicht.
Außerdem möchte ich nichts löschen und neu erstellen ,sondern nur eine Art Statusabfrage machen lassen.

Kopie aus besagtem Thread Kopiervorgang nur wenn Verzeichnis leer
:: ----- snipp isDirLeer.bat
@echo off & setlocal
Set "testdir=d:\temp\MyDir"
if exist %testdir% rd %testdir% /s /q
md %testdir%
echo Leeres Verzeichnis wurde %testdir% angelegt..
call :ChkIfEmpty LeeresDir

:: jetzt mal irgendeine Datei dort reinstellen
echo blah>%testdir%\blubb.txt
call :ChkIfEmpty NichtLeeresDir
if exist %testdir% rd %testdir% /s /q
goto :eof

:ChkIfempty
Echo Teste ..%1
if exist %testdir% dir /b /A:-d %testdir%>nul 2>nul || @echo %testdir% ist leer
if exist %testdir% dir /b /A:-d %testdir%>nul 2>nul && @echo %testdir% ist nicht leer
goto :eof
:: ----- snapp isDirleer.bat
Danke für die Hilfe

Gruß
Claus
Mitglied: bastla
16.11.2006 um 19:36 Uhr
Hallo Claus!

Du brauchst nur die folgenden Zeilen:
01.
Set "testdir=d:\temp\MyDir" 
02.
if exist "%testdir%" dir /b /A:-d "%testdir%">nul 2>nul || @echo %testdir% ist leer 
03.
if exist "%testdir%" dir /b /A:-d "%testdir%">nul 2>nul && @echo %testdir% ist nicht leer
Die "@echo"-Anweisungen ersetzt Du einfach durch etwas Genehmes.

HTH
bastla
Bitte warten ..
Mitglied: cbli
17.11.2006 um 14:40 Uhr
Hallo Claus!

Du brauchst nur die folgenden Zeilen:
01.
Set 
02.
> "testdir=d:\temp\MyDir" 
03.
> if exist "%testdir%" dir /b /A:-d 
04.
> "%testdir%">nul 2>nul || 
05.
> @echo %testdir% ist leer 
06.
> if exist "%testdir%" dir /b /A:-d 
07.
> "%testdir%">nul 2>nul 
08.
> && @echo %testdir% ist nicht leer 
09.
> 
Die "@echo"-Anweisungen ersetzt Du
einfach durch etwas Genehmes.

HTH
bastla

Hat funktioniert, Danke ! Lag wieder mal an den fehlenden Anführungszeichen die ich nicht gesetzt hatte.
Ich hätte noch ne kleine Frage:


@echo off & setlocal
set Inhalt="%Temp%\Inhalt.txt"
for %%i in ("C:\Temp\*.zip") do C:\Utils\7za l -slt "%%i" | findstr /c:"Path = " > %Inhalt% & findstr ".xls .doc .jpg .bmp .gif" %Inhalt% >nul && move /y "%%i" d:\dateien\verarbeitet

hat ja wunderbar funktioniert,doch nun möchte ich diese for schleife ein 2tes mal in der batch einsetzten.
Habe wieder alle Pfade korrigiert ,aber er bricht ohne Fehlermeldung ab.
Ich habe auch schon die Variablen veränder und den Inhalt.txt,hat auch nix geholfen.
Auch den endlocal Befehl habe ich gesetzt und nun bin ich ratlos.
Nochmals eine kleine Hilfestellung wäre nett.

Danke
Claus
Bitte warten ..
Mitglied: Biber
17.11.2006 um 15:28 Uhr
Moin cbli,

nun möchte ich diese for schleife ein 2tes mal in der batch einsetzten...

In diesen Fällen eines mehrfach benötigten Teil-Schnipsels verwendet man/frau in der Regel Unter-Prozeduren, Sub's oder im Batch eben Call:Subblock's.

Dazu wäre hilfreich zu wissen, welche Parameter sich denn unterscheiden.

beim ersten Aufruf:
- Lese-Verzeichnis [und Dateimaske]: C:\temp\*.zip
- gesuchte Datei-Endungen: ".xls .doc .jpg .bmp .gif"
- Zielverzeichnis : d:\dateien\verarbeitet\


Beim zweiten Aufruf:
- Lese-Verzeichnis [und Dateimaske]: C:\temp\*.zip ---------->oder was anderes?
- gesuchte Datei-Endungen: ".xls .doc .jpg .bmp .gif" ---------->oder was anderes?
- Zielverzeichnis : d:\dateien\verarbeitet\ ---------->oder was anderes?

Gruß
Biber
Bitte warten ..
Mitglied: cbli
17.11.2006 um 18:04 Uhr
Moin cbli,

nun möchte ich diese for schleife ein 2tes mal in der batch einsetzten...

In diesen Fällen eines mehrfach benötigten Teil-Schnipsels verwendet
man/frau in der Regel Unter-Prozeduren, Sub's oder im Batch eben Call:Subblock's.

Dazu wäre hilfreich zu wissen, welche Parameter sich denn unterscheiden.

beim ersten Aufruf:
- Lese-Verzeichnis [und Dateimaske]: C:\temp\*.zip
- gesuchte Datei-Endungen: ".xls .doc .jpg .bmp .gif"
- Zielverzeichnis : d:\dateien\verarbeitet\


Beim zweiten Aufruf:
- Lese-Verzeichnis [und Dateimaske]:
C:\temp\*.zip ---------->oder was anderes?

ja hier wird ein anderes Verzeichnis benutzt (eine Verzeichnisebene tiefer) c:\temp\tiefer\
sonst ist alles gleich

- gesuchte Datei-Endungen: ".xls .doc .jpg .bmp .gif" ---------->oder was anderes?
- Zielverzeichnis : d:\dateien\verarbeitet\
---------->oder was anderes?

auch hier wird ein anderes Verzeichnis benutzt (selbes laufwerk) d:\dateien\sortiert\

es sollen aber auch irgendwann mal die gesuchten Dateiendungen geändert werden,allerdings jetzt nicht für dieses Projekt.
Ist es generell möglich auf eine bestimmte Kombination von 2 oder mehreren Dateiendungen in Zips abzufragen ?

z.b wenn *.xls und *.doc in einer Zip Datei sind = verschieben
nur eine enthalten der beiden = nicht verarbeiten

Danke
Gruß
Claus
Bitte warten ..
Mitglied: Biber
17.11.2006 um 18:42 Uhr
Okay, cbli,

ich versuche mal eine Skizze...

01.
::-----snipp SortierMeineZips.bat 
02.
@echo off & setlocal 
03.
set Inhalt="%Temp%\Inhalt.txt" 
04.
REM Erster Aufruf: ZIPDir=c:\Temp ZielDir=d:\dateien\verarbeitet 
05.
Call :MachMirDieZips c:\Temp d:\dateien\verarbeitet 
06.
 
07.
REM Zweiter Aufruf: ZIPDir=c:\Temp\tiefer ZielDir=d:\dateien\sortiert 
08.
Call :MachMirDieZips c:\Temp\tiefer d:\dateien\sortiert 
09.
REM .... weitere Anweisungen... 
10.
goto :eof 
11.
~~~~~~~~ 
12.
Raum für Notizen 
13.
 
14.
~~~~~~~~ 
15.
:MachMirDieZips Parameter 1: ZipDir Parameter2: ZielDir 
16.
for %%i in ("%~1\*.zip") do C:\Utils\7za l -slt "%%i" | findstr /c:"Path = " > %Inhalt% & findstr ".xls .doc .jpg .bmp .gif" %Inhalt% >nul && move /y "%%i" "%~2"
Zur Frage zwei (wenn *.doc UND *.xls enthalten)...

Dann musst Du statt der einen ODER-Bedingung...
01.
findstr ".xls .doc .jpg .bmp .gif" %Inhalt%
...mehrere Findstr/Find-Bedingungen hintereinander stellen und mit UND, auf bätchisch "&&" verknüpfen.

01.
findstr ".xls" %Inhalt%>nul  && findstr ".doc" %Inhalt%>nul && findstr ".bla" %Inhalt%>nul move ......
=Wenn ".xls" gefunden UND ".doc" gefunden UND ".bla" gefunden DANN move ...

HTH Biber

[Ungetestete Skizze/ unausgelebte Phantasien... handle with care]

P.S. @cbli
Wollen wir Diesen Thread hier schließen?
Ich kann dafür Deinen geschlossenen Beitrag "Dateien abhängig vom Inhalt verschieben" wieder öffnen, wenn Du da noch weiterbasteln willst...
Bitte warten ..
Mitglied: cbli
17.11.2006 um 19:18 Uhr
Okay, cbli,

ich versuche mal eine Skizze...

01.
::-----snipp 
02.
> SortierMeineZips.bat 
03.
> @echo off & setlocal 
04.
> set Inhalt="%Temp%\Inhalt.txt" 
05.
> REM Erster Aufruf: ZIPDir=c:\Temp 
06.
> ZielDir=d:\dateien\verarbeitet 
07.
> Call :MachMirDieZips c:\Temp 
08.
> d:\dateien\verarbeitet 
09.
>  
10.
> REM Zweiter Aufruf: ZIPDir=c:\Temp\tiefer 
11.
> ZielDir=d:\dateien\sortiert 
12.
> Call :MachMirDieZips c:\Temp\tiefer 
13.
> d:\dateien\sortiert 
14.
> REM .... weitere Anweisungen... 
15.
> goto :eof 
16.
> ~~~~~~~~ 
17.
> Raum für Notizen 
18.
>  
19.
> ~~~~~~~~ 
20.
> :MachMirDieZips Parameter 1: ZipDir 
21.
> Parameter2: ZielDir 
22.
> for %%i in ("%~1\*.zip") do 
23.
> C:\Utils\7za l -slt "%%i" | findstr 
24.
> /c:"Path = " > %Inhalt% & 
25.
> findstr ".xls .doc .jpg .bmp .gif" 
26.
> %Inhalt% >nul && move /y 
27.
> "%%i" "%~2" 
28.
> 
Zur Frage zwei (wenn *.doc UND *.xls
enthalten)...

Dann musst Du statt der einen
ODER-Bedingung...
01.
findstr ".xls .doc .jpg 
02.
> .bmp .gif" %Inhalt% 
03.
> 
...mehrere Findstr/Find-Bedingungen
hintereinander stellen und mit
UND, auf bätchisch
"&&" verknüpfen.

01.
findstr ".xls" 
02.
> %Inhalt%>nul  && findstr 
03.
> ".doc" %Inhalt%>nul && 
04.
> findstr ".bla" %Inhalt%>nul move 
05.
> ...... 
06.
> 
=Wenn ".xls" gefunden UND
".doc" gefunden UND
".bla" gefunden DANN move ...

HTH Biber

[Ungetestete Skizze/ unausgelebte
Phantasien... handle with
care
]

P.S. @cbli
Wollen wir Diesen Thread hier
schließen?
Ich kann dafür Deinen geschlossenen
Beitrag "Dateien abhängig vom
Inhalt verschieben" wieder öffnen,
wenn Du da noch weiterbasteln willst...

Ja,können wir so machen,ich denke es werden bestimmt noch andere Fragen auftauchen im Zusammenhang mit dem Ursprungsthread den du
netterweise wieder öffnen willst.
Danke dafür.
Wünsche noch ein schönes Wochenende und vielleicht kann ich ja irgendwie was von der Hilfe die ich hier erhalten habe, in irgendeiner
Form zurückgeben.

Gruß
Claus
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch zum Prüfen ob ein bestimmter Benutzer in einem bestimmten Verzeichnis ist

Frage von TechnikTVBatch & Shell7 Kommentare

Hallo ihr alle, ich steh gerade auf dem Schlauch ich möchte per Batch prüfen ob ein bestimmter Benutzer in ...

PHP

PHP - Prüfen ob XML Knoten leer ist

gelöst Frage von chrisenPHP1 Kommentar

Hallo zusammen, wie kann ich überprüfen ob ein XML Knoten leer ist? XML: Was ich bisher versucht habe: Ich ...

Monitoring

Zabbix: wenn Verzeichnis fehlt oder leer ist, dann Trigger

gelöst Frage von honeybeeMonitoring5 Kommentare

Hallo, kann man in Zabbix so konfigurieren, dass ein Trigger ausgelöst wird, wenn ein bestimmtes Verzeichnis fehlt oder leer ...

Batch & Shell

Windows Batch - Drag and Drop - prüfen ob Parameter leer

gelöst Frage von zimbosmurfBatch & Shell2 Kommentare

Hallo! Ich habe ein Batch-Skript für eine Backuproutine entworfen, das aufgerufen werden soll, indem man einen Ordner auf das ...

Neue Wissensbeiträge
Peripheriegeräte
Unterschrank für HP Drucker
Tipp von NixVerstehen vor 8 StundenPeripheriegeräte1 Kommentar

Als kurzen Freitags-Tipp möchte ich gerne meinen neuen Drucker-Unterschrank Modell Amica KS 15423W vorstellen. Das Gerät eignet sich hervorragend ...

Windows 10
Windows 10 - Probleme mit Point-And-Print
Tipp von emeriks vor 1 TagWindows 103 Kommentare

Hi, wir kämpfen z.Z. mit einigen Druckertreibern, welche unter Win10 beim Verbinden eines Druckers von Printserver mit dem Dialog ...

Windows 10

Windows 10 1803 - Ihr Roamingbenutzerprofil wurde nicht vollständig synchronisiert

Anleitung von Deepsys vor 1 TagWindows 101 Kommentar

Bei allen Windows 10 1803 PCs traten Probleme mit den Servergespeicherten Profilen auf. Das Abmelden dauerte sehr lange und ...

Exchange Server
Exchange - Fehler mit 2018-07 Sicherheitsupdate
Tipp von ArnoNymous vor 3 TagenExchange Server7 Kommentare

Hallo, es gibt mal wieder Freude mit den MS-Updates. KB4338814 führt dazu, dass der Exchange keine Mails mehr zustellt. ...

Heiß diskutierte Inhalte
Humor (lol)
Freitagsfrage: Was tun, wenn der Admin der DAU ist?
Frage von VoiperHumor (lol)29 Kommentare

Moin Zusammen, Eine nicht ganz ernst gemeinte Frage an die Außendienstler unter uns. Zusammenfassung: Ein Inhouse Admin ruft bei ...

Windows Server
W2K16 Essentials: keine Namensauflösung nach der Einrichtung DNS + AD DS
Frage von Ben-WittWindows Server22 Kommentare

Ich versuche bereits seit ca. 4 Wochen einen Server 2016 "Essentials" richtig zu installieren. An diesem Server möchte ich ...

Exchange Server
Exchange Backup 10 Jahre Aufbewahrung
Frage von arccosExchange Server20 Kommentare

Hallo zusammen. Aktuell beschäftigen mich ein paar Fragen zum Thema Office365/ Exchange. 1.10 Jahre Aufbewahrungspflicht sicherstellen 2.Kann man als ...

Windows Netzwerk
LTE Modul - Kein Internet trotz Verbindung
Frage von killtecWindows Netzwerk18 Kommentare

Hallo, ich habe hier ein Dell 7390 2-in-1 mit W10 Pro wo ich nachträglich eine LTE-Karte (Original Dell DW5811e ...