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

Batch-Job zum Dateiverschieben, 0kb Dateien ignorieren

Frage Entwicklung Batch & Shell

Mitglied: Garcon

Garcon (Level 1) - Jetzt verbinden

13.05.2014, aktualisiert 14.05.2014, 1629 Aufrufe, 3 Kommentare

Hallo,

ich habe folgendes Problem.

Meine NAS erhält Dateien geliefert, in ein zentrales Verzeichnis. Mein Server ruft diese Dateien ab, und sortiert diese nach Datei-Endungen vor.

Der Abhole und Sortiervorgang zeigt nun (seit gestern erstmalig) hin und wieder Dateien mit 0kb zu erhalten. Meine Vermutung ist, dass der Schreibvorgang der Gegenseite auf der NAS noch nciht abgeschossen ist, denn von dort kamen im gleichen Zeitfenster wie die Erstelldaten der 0kb-Dateien ein paar Fehlerrückmeldungen.

Der Server holt die Dateien via Sceduled Task in einer batch-datei. das sieht heute etwa folgendermaßen aus:


net use \\NAS /user:test\ pwd


xcopy \\NAS\incoming\*.abc d:\externsend\abc_save
move \\NAS\incoming\*.abc d:\externsend\abc

xcopy \\NAS\incoming\*.def d:\externsend\def_save
move \\NAS\incoming\*.def d:\externsend\def

xcopy \\NAS\incoming\*.xml d:\externsend\xml_save
move \\NAS\incoming\*.xml d:\externsend\xml


net use \\NAS /d



im eigentlichen Zielverzeichnis wird die Datei weiterverarbeitet, und verschwindet dann, zur Sicherheit lege ich im 1. Schritt (xcopy) eine Kopie in einem Sicherungsordner an, welche nach 7 Tagen gelöscht wird. Nur so konnte ioch überhaupt sehen, dass erstmals 0kb-Dateien angekommen sind.

Ich suche jetzt einen Script-Teil, der obiges tut, aber sicherstellt, dass die Dateien nicht 0kb groß sind. diese müssen auf der NAS verbleiben, weil die Annahme, das der Sender noch schreibt, besteht.

Jetzt kommt es noch etwas komplizierter. Jede Datei auf der NAS hat eine zughörige XML-Datei (gleicher Dateiname, andere Endung). Die xml dient dem Server als erklärung, was er genau dort erhalten hat, bzw. was er damit tun soll. Es darf nun natürlich nciht passieren, dass eine XML transfgeriert wird, während die eigentliche Datei noch 0kb hat, und dehalb ignoriert wurde.

Hat jemand irgendeine gute Idee zur verwirklichung? Ich muss sagen, dass ich mich mit den Shell-Scripten / DOS-Scripten ziemlich schlecht auskenne. copy, move delte und verzeichniswechsel bekomme ich noch hin, auch sonst ein paar kleinigkeiten, aber wie kann ich die Dateieigenschaften auslesen?

Bitte um Mithilfe, vielen Dank
Garcon
Mitglied: Xaero1982
LÖSUNG 13.05.2014, aktualisiert 14.05.2014
Moin,

01.
 
02.
@echo on 
03.
 
04.
set dateiendung=abc 
05.
set xml=xml 
06.
set quelle=\\NAS\incoming\ 
07.
set ziel=d:\externsend\ 
08.
 
09.
for %%i in (%quelle%*.%xml%) do (for %%x in (%quelle%*.%dateiendung%) do if "%%~ni"=="%%~nx" if %%~zi gtr 0 if %%~zx gtr 0 xcopy "%%i" "%ziel%%%~ni%%~xi"  && xcopy "%%x" "%ziel%%%~nx%%~xx") 
10.
 
Ich denke anpassen schaffst du

Im Moment ist es nur für eine Dateiendung.

Evtl. kannst du das mit einer weiteren For-Schleife davor, also mit:

01.
 
02.
for %%a in (abc def geh) do for %%i in (%quelle%*.%xml%) do (for %%x in (%quelle%*.%%a) do if "%%~ni"=="%%~nx" if %%~zi gtr 0 if %%~zx gtr 0 xcopy "%%i" "%ziel%%%a_save\%%~ni%%~xi"  && move "%%i" "%ziel%"\ && xcopy "%%x" "%ziel%%%a_save\%%~nx%%~xx" && move "%%x" "%ziel%"\) 
03.
 
alle aufnehmen (ungetestet)

Die Dateiendung xml bleibt ja wie ich es verstanden habe gleich.

Was passiert hier sonst: Er überprüft
01.
"%%~ni"=="%%~nx"
Ob die Dateinamen gleich sind %%~n liefert nur den Dateinamen ohne Endung zurück. Also wenn zwei Dateien mit dem gleichen Namen vorhanden sind.
Dann prüft er weiter
01.
 if %%~zi gtr 0 if %%~zx gtr 0
ob sowohl die xml als auch die andere Datei größer als 0kb sind. (%%~z) liefert die Dateigröße.

Erst wenn das alles zutrifft kopiert er die Dateien.

Teste erst mal das erste Beispiel ... dann schauen wir weiter.

Gruß
Bitte warten ..
Mitglied: Xaero1982
13.05.2014, aktualisiert um 17:55 Uhr
01.
@echo on 
02.
 
03.
set xml=xml 
04.
set quelle=\\NAS\incoming\ 
05.
set ziel=d:\externsend\ 
06.
mkdir %ziel%xml_save 
07.
mkdir %ziel%xml 
08.
 
09.
 
10.
for %%a in (txt bat jpg) do for %%i in (%quelle%*.%xml%) do (for %%x in (%quelle%*.%%a) do if "%%~ni"=="%%~nx" if %%~zi gtr 0 if %%~zx gtr 0 xcopy "%%i" "%ziel%xml_save\" && xcopy "%%x" "%ziel%%%a_save\" && mkdir "%ziel%%%a" && move "%%i" "%ziel%xml\" && move "%%x" "%ziel%%%a\") 
11.
 
Damit sollte es dann klappen.

Gruß
edit: und er ward nicht mehr gesehen
Bitte warten ..
Mitglied: Garcon
14.05.2014 um 12:59 Uhr
vielen Dank dafür,

bin am Ummodeln und Testen. Werde vermutlich heute Abend die ersten Files drüber jagen können. Musste noch etwas umbauen, weil die Dateinamen

ABCD.EFG
und
ABCD.EFG.XML

zusammengehören. Sprich die %%xi muss inkl. Endung geprüft werden~n. Wenn ich das Coding richtig verstanden habe sollte ich es richtig gemacht haben.

Ich melde mich noch mal, wenn es Probleme gibt, bzw. schließe Dankend, wenn es funktioniert hat.

Gruß
Garcon
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...