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

Frage Entwicklung Batch & Shell

GELÖST

Kopiervorgang nur wenn Zielverzeichnis leer

Mitglied: motec

motec (Level 1) - Jetzt verbinden

16.11.2005, aktualisiert 17.11.2005, 5310 Aufrufe, 5 Kommentare

Hallo zusammen,

bin heute zufällig auf dieses Forum gestossen, Super sache!!

Habe auch direkt eine Frage:

Per Bat will ich mehrmals täglich manuell Dateien kopieren.
Der Kopiervorgang darf jedoch nur dann starten wenn das Zielverzeichnis leer ist.
Falls das Verzeichnis nicht leer ist muss die Batchdatei eine Fehlermeldung liefern.

Kann mir hier jemand helfen??

Vielen Dank!

Gruss

motec
Mitglied: Biber
16.11.2005 um 15:35 Uhr
Moin motec,

willkommen im Forum. Sollst auch gleich Deinen ersten Newbie-Rüffel bekommen - selbst bei Batchen ist es mittlerweile (manchmal) wichtig, um welche Windowsversion es geht.

Folgender Batch zeigt eine der möglichen Strategien ab Windows 2000 ff, unter Win9x wären kleinere Anpassungen nötig. Allerdings nicht in den beiden eigentlich wichtigen Zeilen mit der "ist-Verzeichnis-leer?"-Prüfung im Block :ChkIfEmpty.
01.
:: ----- snipp isDirLeer.bat 
02.
@echo off & setlocal 
03.
Set "testdir=d:\temp\MyDir" 
04.
if exist %testdir% rd %testdir% /s /q 
05.
md %testdir% 
06.
echo Leeres Verzeichnis wurde %testdir% angelegt.. 
07.
call :ChkIfEmpty LeeresDir 
08.
 
09.
:: jetzt mal irgendeine Datei dort reinstellen  
10.
echo blah>%testdir%\blubb.txt 
11.
call :ChkIfEmpty NichtLeeresDir 
12.
if exist %testdir% rd %testdir% /s /q 
13.
goto :eof 
14.
 
15.
:ChkIfempty 
16.
Echo Teste ..%1 
17.
if exist %testdir% dir /b /A:-d %testdir%>nul 2>nul || @echo %testdir% ist leer 
18.
if exist %testdir% dir /b /A:-d %testdir%>nul 2>nul && @echo %testdir% ist nicht leer 
19.
goto :eof 
20.
:: ----- snapp isDirleer.bat
Output bei mir wäre:
01.
>e:\isDirLeer.bat 
02.
Leeres Verzeichnis wurde d:\temp\MyDir angelegt.. 
03.
Teste ..LeeresDir 
04.
d:\temp\MyDir ist leer 
05.
Teste ..NichtLeeresDir 
06.
d:\temp\MyDir ist nicht leer
Beim Selbertesten bitte die Zeile Set "testdir=d:\temp\MyDir" ändern in Set "testdir=%temp%\MyDir".

HTH Biber
Bitte warten ..
Mitglied: motec
16.11.2005 um 17:38 Uhr
Hallo,

danke für die antwort. Hast recht, leider muss man immer das BS mitliefern. In meinem Fall ist der Quellrechner ein XP--Pro und der Zielrechner ein Win2000 Server.
Bevor ich was zu sage muss ich gestehen das ich bisher keine Erfahrungen mit der Batchprogrammierung habe.

Wenn ich das Script richtig verstehe erstellt es erst ein Verzeichnis und erstellt dann eine Datei, danach überprüft es ob der Ordner leer ist.

Wie soll mir das bei meinem Problem weiterhelfen?

Hier nochmal anders beschrieben:

Kopieren von Date mit dem Namen *.*(alles was in dem Quellverzeichnis vorhanden ist) in das Zielverzeichnis \\192.125.12.34\Backup\
Wenn das Verzeichnis bereits einen Inhalt, egal welcher Art hat, dann den Kopierbefehl nicht ausführen sondern einen Fehler melden.

Ziel ist hier die verschiedenste Dateien wie auch Dateiformate reinzukopieren und dann mit einem weiteren Programm zu verarbeiten. Wenn dieses Programm nicht sauber verarbeitet sollte darf nicht mehr reinkopiert werden weil dadurch unter Umständen stehengebliebene Dateien überschreiben werden können. Ausserdem habe ich damit eine Kontrolle über eine saubere Verarbeitung auf dem Zielrechner.


Nochmal danke.
Bitte warten ..
Mitglied: Biber
16.11.2005 um 17:54 Uhr

och, motec,
ich hatte Dein Problem schon verstanden (glaub ich) und es war durchaus konstruktiv gemeint - ich wollte Dir nur eine mögliche Strategie zeigen, wie Du diese Prüfung gestalten kannst.

Das Wesentliche ist ja in den beiden "IF Exist verzeichnis"-Zeilen:
..
: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
..

Mimik..
1) wenn das Verzeichnis existiert ( z.B. IF exist \\192.125.12.34\Backup\ ), dann...
2) dir /b /A:-d \\192.125.12.34\Backup>nul 2>nul
...zeige mir alle Dateien, die nicht das Directory-Attribut haben
Denn die beiden Pseudo-Einträge "."(aktuelles Verzeichnis) und ".."(Parent) will ich unterdrücken....

... dann -> zwei Möglichkeiten:
Entweder es gibt solche Dateien, also Verzeichnis nicht leer..
oder es gibt keine Dateien, dann ist es leer.

Und das war doch die Prüfung, die Du wolltest, dachte ich?
Sonst poste den Batch (oder den relevanten Teil davon), dann zeig ich das am konkreten Beispiel.

Grüße Biber
Bitte warten ..
Mitglied: motec
17.11.2005 um 12:57 Uhr
Danke für ie Info.
War das was ich brauche, hatte wohl gestern tomaten auf den augen.


gruss

motec
Bitte warten ..
Mitglied: Biber
17.11.2005 um 13:11 Uhr
Danke für die Rückmeldung,
und glaub mir: einige hier im Forum haben jeden Tag schlechtere Tage als Du gestern.
Schönen Tach weiterhin
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Linux bash script: Datei verschieben nur wenn Zielverzeichnis leer
gelöst Frage von ole-objektBatch & Shell2 Kommentare

Hallo! ich steh gerade total auf dem Schlauch: Ich muss in einem Skript viele Dateien in ein bestimmtes Verzeichnis ...

Windows Server
Kopiervorgänge überwachen
Frage von john-doeWindows Server6 Kommentare

Hallo Zusammen Kennt jemand eine Software die Kopiervorgänge überwachen kann und bei einer größeren Datenbewegung Alarm schlägt. Die Software ...

Windows 7
Kopiervorgang Logdatei
Frage von Riddler123Windows 71 Kommentar

Hi, hab ne NAS Festplatte und wollte wissen ob ich auf meinem Windows 7 Laptop nach dem Kopieren von ...

Windows Tools
Robocopy . Datei im Zielverzeichnis nur überschreiben, wenn neuer
Frage von gnrmarcelWindows Tools7 Kommentare

Hallo, ich habe hier in der Firma, ältere USB Festplatten, wo das Gleiche (Ordner struktur inkl. Dateien) drauf ist ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 8 StundenLinux1 Kommentar

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit24 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
gelöst Frage von Windows10GegnerNetzwerkgrundlagen23 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...