PDA

View Full Version : Fileumbenennung auf Windows-Server



votch
14-11-12, 10:22
Guten Morgen zusammen,

ich habe folgendes Problem und hoffe, dass mir evtl. jemand weiterhelfen kann:

Prg-Ablauf aktuell:
Schritt 1:
Ich erstelle Files und lege diese auf einem Windows-Server ab, wo diese über eine PC-Software verarbeitet werden und irgendwann nach der verarbeitung wieder bereitgetellt werden in einem anderen Verzeichnis.
Schritt 2:
Ich übernehme die verarbeiteten Files wieder vom Windows-Server per FTP(MGET) in ein temp. Verzeichnis im IFS. Erstelle mir eine Liste aller Files im temp. Verzeichnis IFS(dort liegen auch diverse andere Files) und arbeite diese Liste ab. Jedes File mit der Endung *.TX1(*.tx1-Files wurden auf dem Windows-Server verarbeitet) wird dann per CPYFRMIMPF in ein Workfile übernommen und dieses Workfile wird dann verarbeitet. Nach erfolgreicher Verarbeitung wird das File dann per FTP auf dem Windows-Server archiviert und gelöscht und aus dem IFS gelöscht.

Bisher lief das alles problemlos, da fest definiert war, wie die File-Namen auszusehen hatten(eindeutige lfd. Nummer, verkettet mit ".TX1").

Leider können jetzt User in diesen Ablauf eingreifen, indem sie selbst die Filenamen umbenennen in der PC-Software.
Problem 1: Es gibt Filenamen mit Umlauten wie "Nürnberg.tx1", die automatisch bei der FTP-Übertragung auf MsgW laufen.
Problem 2: Es gibt Files mit Blanks, wie "Bremen 01.tx1", die ins IFS übernommen werden, die nicht richtig gelöscht werden können und die Jobnachrichtenwarteschlange zum Überlaufen bringen, da der Pfad(inkl. Filename) gesplittet wird.

Spool:
rm: 001-2103 Fehler gefunden beim Abrufen der Informationen für Datei oder Verzeichnis /TEMP/BREMEN. Kein Pfad oder kei
rm: 001-2103 Fehler gefunden beim Abrufen der Informationen für Datei oder Verzeichnis _14.11.2012.tx1. Kein Pfad oder keine Bibli

Meine Frage daher, gibt es eine einfache und schnelle Möglichkeit, die Files von der AS/400 aus bereits vor Übernahme ins IFS auf dem Windows-Server zu prüfen(auf Umlaute und Blanks) und diese ggf's umzubenennen oder eine sonstige Möglichkeit das Problem z.B. per CCSID-Umstellung zu lösen?

Hab leider für den konkreten Fall nichts im Forum gefunden.

Vorab schon einmal vielen Dank,
votch

KingofKning
14-11-12, 12:09
Eigentlich ja nun kein Problem.

Du läßt auf dem Server einen Batch laufen. Bsp siehe Batch: Alle Leerzeichen aus einer Variable löschen? (Dos, Programmierung) (http://www.gutefrage.net/frage/batch-alle-leerzeichen-aus-einer-variable-loeschen) Wobei Du in diesem Beispiel halt die Dateinamen in eine Variable übernimst.

Alternativ kannst Du sowas auch mit vbs programmieren da hast Du mehr Möglichkeiten.
Siehe vb@rchiv · FAQ · Leerzeichen in einem String löschen (Trim-Funktion) (http://www.vbarchiv.net/faq/faq_strings_trim.html) bzw. http://www.phw-jendreck.de/macrocenter/vb/show.php?id=Mzg=&_Funktion_trim_Leerzeichen_aus_einem_String_entfer nen


GG

Pikachu
14-11-12, 12:22
Problem 2: Es gibt Files mit Blanks, wie "Bremen 01.tx1", die ins IFS übernommen werden, die nicht richtig gelöscht werden können ...
Probier mal mit Anführungszeichen um den Dateinamen:

DEL "Bremen 01.tx1"

votch
14-11-12, 13:10
Danke erstmal, mit den Anführungszeichen bin ich gerade am versuchen, damit kann ich evtl. das Problem mit den Leerzeichen beheben. Die anderen Sachen lese ich mir danach in jedem Fall nochmals durch.

Meine PC-Programmierkenntnisse sind leider begrenzt auf Assembler, Cobol(ans85) und C und es ist schon lange her, dass ich damit was gemacht habe...

votch
14-11-12, 16:58
Hallo und Danke nochmals für die Hilfe,

das Problem mit den Leerzeichen habe ich in den Griff bekommen. D.h., ich werde Morgen früh nicht direkt vom Admin erschlagen :-) und kann mich um das 2. Problem kümmern.

Zur Info, falls jemand mal ein ähnliches Problem haben sollte:

Nachdem ich den Filenamen in der Variable zusätzlich in einfache Anführungszeichen gesetzt habe, hat es funktioniert:

Ablage und Löschen auf Win-Server
Befehl in FTP alt:
put 0xyz 20121114.tx1
del Trans/0xyz 20121114.tx1
Befehl in FTP neu:
put '0xyz 20121114.tx1'
del 'Trans/0xyz 20121114.tx1'
(Pfad-/File-Name stehen zwar in Parmaeterfeldern, aber der Befehl an sich sieht im Klartext nachher so aus, wie oben beschrieben)

Da der remove-Befehl(via QSH) der noch im Programm war(Löschen File im IFS) ebenfalls nicht mehr funktionierte, habe ich den ersetzt durch
Del 'tmp/0xyz 20121114.tx1'

Bezüglich der File-Umbenennung(Ersetzen Sonderzeichen und Umlaute durch andere gültige zeichen) auf dem Windows-Server(damit diese per FTP übernommen werden können), suche ich noch nach einer Lösung. Vielleicht gibt es ja auch eine wesentlich elegantere Lösung, ohne umbenennen der Files ???

Wahrscheinlich werde ich das irgendwie über ein DOS-Batch-Prg machen. Falls jemand aber einen besseren Tipp für mich hat, oder ein Beispiel oder Ähnliches, wäre ich sehr dankbar.

VlG,
votch

KingofKning
15-11-12, 07:59
Meine PC-Programmierkenntnisse sind leider begrenzt auf Assembler, Cobol(ans85) und C und es ist schon lange her, dass ich damit was gemacht habe...

6502 68.000er oder doch nur 8086? ;-)

GG

votch
17-11-12, 21:54
Leider nur 8086, aber ist doch schon etwas her...