PDA

View Full Version : Dateien auf dem IFS löschen



Seiten : [1] 2

codierknecht
01-03-05, 15:00
Hallo zusammen,

mittels diverser Programme erzeuge ich temporäre Dateien auf dem IFS un öffne diese mit STRPCCMD auf dem PC. Nun hat sich einiger Datenmüll angesammelt, den ich nun nachts löschen möchte. Die Dateien liegen in der Form /Pfad/JOB/User/Dateien vor.
Nun möchte ich alle Dateien und Verzeichnisse in /Pfad löschen. Ich habe es mit RMVDIR und Parameter RMVLNK(*YES) versucht, aber die Dateien werden nicht gelöscht, da dieses laut Fehlermeldung nicht vom IFS unterstützt wird. Wie kann ich die Dateien nun löschen, ohne mich um jede einzeln zu kümmern.
Ich kann die Dateien zwar mittels STRPCCMD löschen, aber nachts ist kein PC aktiv, der dies ausführen könnte.

Hat jemand eine Idee?

Fuerchau
01-03-05, 15:14
Wo liegt denn der Pfad genau ?
"Normalerweise" funktioniert das bei z.b. "/Home/MyPfad".

codierknecht
01-03-05, 15:22
Die Dateien liegen im IFS unter /root/Pfad/ und NICHT unter /Home. Ich möchte den gesamten Inhalt von /Pfad löschen. Der Inhalt besteht aus mehreren Pfaden und Dateien.

TARASIK
01-03-05, 15:39
Hallo Geplagter (Codierknecht),
ich denke da helfen Dir die IFS Tools:

DELTREE
Similar to DOS's DELTREE command, the DELTREE utility deletes all files, directories, and subdirectories from the parent directory down.

DEL
This deletes one or more files:

Usage:

CALL PGM(DEL) PARM('<file>' '\s')
where <file> specifies the file to be deleted, and the optional '\s' specifies that the files in the subdirectories will be deleted. You can use wildcard characters to delete multiple files.

Examples:

CALL PGM(DEL) PARM('/rjzeller/myfile.txt')
CALL PGM(DEL) PARM('/rjzeller/*.*')
CALL PGM(DEL) PARM('/rjzeller/*.eml' '\s')

You can download the save file for the ISF Tools from ftp://testcase.boulder.ibm.com/as400/fromibm/ApiSamples/ifstool.savf. Once you've downloaded the save file from IBM's site and uploaded it to your AS/400, enter the following command to restore the save file to your target library:

RSTOBJ OBJ(*ALL) SAVLIB(DDILLING) DEV(*SAVF) +
SAVF(yourlib/IFSTOOL) RSTLIB(targetlibrary)

codierknecht
07-03-05, 10:41
Gibt es denn keinen Befehl oder ein API mit dem ich das Problem lösen kann?

Es liegt offensichtlich an dem IFS. Auch als QSECOFR kann ich die Verzeichnisse mit Inhalt nicht löschen.

Hat jemand noch eine Idee?
Oder kann ich mir eine komplette Verzeichnisstruktur z.B. als Spooldatei oder besser als PF erstellen? DSPLNK liefert mir leider nur das aktuelle Verzeichnis an, jedoch keine Unterverzeichnisse und deren Inhalt.


to be continued....

BenderD
07-03-05, 11:40
Hallo,

QSH CMD("rm -r /Pfad/*")

mfg

Dieter Bender


Hallo zusammen,

mittels diverser Programme erzeuge ich temporäre Dateien auf dem IFS un öffne diese mit STRPCCMD auf dem PC. Nun hat sich einiger Datenmüll angesammelt, den ich nun nachts löschen möchte. Die Dateien liegen in der Form /Pfad/JOB/User/Dateien vor.
Nun möchte ich alle Dateien und Verzeichnisse in /Pfad löschen. Ich habe es mit RMVDIR und Parameter RMVLNK(*YES) versucht, aber die Dateien werden nicht gelöscht, da dieses laut Fehlermeldung nicht vom IFS unterstützt wird. Wie kann ich die Dateien nun löschen, ohne mich um jede einzeln zu kümmern.
Ich kann die Dateien zwar mittels STRPCCMD löschen, aber nachts ist kein PC aktiv, der dies ausführen könnte.

Hat jemand eine Idee?

codierknecht
07-03-05, 11:55
Ahh, das hat geholfen.

Vielen Dank

Bogomil
08-03-05, 21:01
Mit RMVDIR kann man nur leere Verzeichnisse im IFS löschen, wie Du bemerkt hast. Ich habe im meinem Programm ein EREASE /pfad/*.* und ERASE /pfad/*
Damit werden alle Dateien gelöscht. Anschliessend RMVDIR. Achtung: wenn keine Dateien gefunden werden, gibts eine Fehlermeldung, also MONMSG MSGID(CPFA???) verwenden.

Statt ERASE funktionieren auch DEL oder RMVLNK als AS400-Befehle.

Bogomil

codierknecht
09-03-05, 07:36
Hallo,


vielen Dank für die Antwort.
Mit ERASE funktioniert es auch einwandfrei. DEL RMVLNK etc. haben alle eine Fehlermeldung erzeugt nach deren Aussage entweder die benötigten Berechtigungen fehlen oder das IFS dies nicht zulässt. An den Berechtigungen liegt es jedoch nicht.

Aber die Lösung mit der QShell funktioniert sehr gut.

Fuerchau
09-03-05, 09:51
So ganz kann ich das nicht glauben, alle CMD's (ERASE, DEL, RMVLNK) verwenden das selbe Befehlsverarbeitungsprogramm (DSPCMD). Warum sollten sie sich dann anders verhalten ?
Einzig RMVDIR hat ein anderes Programm.

Verbindung entfernen (ERASE) - Hilfetext

Dieser Befehl ist ein Aliasname für den Befehl RMVLNK (Verbindung
entfernen) und kann auch unter Verwendung der folgenden alternativen
Befehlsnamen abgesetzt werden:

o DEL

o RMVLNK