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, 1692 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
Windows Update

Windows Update-Suche nach Win7 Neuinstallation wieder schneller

(2)

Erfahrungsbericht von the-buccaneer zum Thema Windows Update ...

Ähnliche Inhalte
Batch & Shell
Maximale Größe zu verarbeitender txt-Dateien mit Batch (5)

Frage von Muck1303 zum Thema Batch & Shell ...

Windows Server
gelöst PS Dateien löschen mit 0kb (4)

Frage von Florian86 zum Thema Windows Server ...

Batch & Shell
gelöst Suche Batch-Programm zum Zusammenfügen zweier PDF-Dateien (3)

Frage von Sinzal zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Hyper-V
gelöst Reiner Hyper- V Server oder lieber Rolle (22)

Frage von Winuser zum Thema Hyper-V ...

Exchange Server
gelöst Bestehende eMails autoamatisch weiterleiten (22)

Frage von metal-shot zum Thema Exchange Server ...

SAN, NAS, DAS
gelöst Synology Version 6.1 Probleme (18)

Frage von Hendrik2586 zum Thema SAN, NAS, DAS ...

Router & Routing
gelöst IP Kamera für drei unabhängige Netzwerke (16)

Frage von ProfessorZ zum Thema Router & Routing ...