RenameFile funtioniert nicht

Anfängerfragen zum Programmieren mit PureBasic.
Heinz Mendax
Beiträge: 50
Registriert: 29.03.2013 12:25
Wohnort: Eisenach

RenameFile funtioniert nicht

Beitrag von Heinz Mendax »

Hallo !
Habe ein Umnenntool für Bilddateien programmiert, das einige Merkmale zum Inhalt des Bildes und zum Aufnahmedatum im Dateinamen aufnimmt. Zum Schluss des Programms soll folgende Zeile das Umnennen ausführen.

erg=RenameFile(AlterDateiname$,NeuerDateiname$)

Das funktioniert aber nicht immer, hauptsächlich nicht, wenn die Bilder auf einer externen Festplatte sind. Dann ist
bei Kontrolle nichts passiert, ausser das man die Zeit für die Bearbeitung einer größeren Anzahl Bilder vertan hat. Beim Debuggen ist erg manchmal 0 - dh. RenameFile funktionierte nicht. Was Kann man dann außer RenameFile tun, daß die Dateien auf jeden Fall umbenannt werden.

mfG
Heinz
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Re: RenameFile funtioniert nicht

Beitrag von Pelagio »

Hallo Heinz Mendax,

das umbenennen der Dateien müsste funktionieren aber es sind natürlich dazu Voraussetzungen notwendig, die man aus deinem Text nicht herauslesen kann.
Ist der Pfad in den Dateinamen mit angegeben?
Hast Du dei entsprechenden Rechte in den Verzeichnissen?
ist die eine oder andere Datei eventuell in gebrauch?
Ich hatte mit dem Befehl bis dato noch nie Probleme.
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.10 LTS]. :allright:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: RenameFile funtioniert nicht

Beitrag von ts-soft »

Ergänzend zu Pelagio:
Heinz Mendax hat geschrieben:Habe ein Umnenntool für Bilddateien programmiert, das einige Merkmale zum Inhalt des Bildes und zum Aufnahmedatum im Dateinamen aufnimmt.
Überprüft, ob der Dateiname noch den Konventionen des Dateisystems entspricht?
Pfadlänge mit Dateiname noch unter maximaler Länge (z.B. 260 Zeichen)?
Ist das externe Laufwerk irgendwas besonderes? Also z.B. ein NAS-Laufwerk?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Heinz Mendax
Beiträge: 50
Registriert: 29.03.2013 12:25
Wohnort: Eisenach

Re: RenameFile funtioniert nicht

Beitrag von Heinz Mendax »

Hallo !
Ergänzung : die externen Festplatten sind USB-Laufwerke
- Dateien einunddesselben Verzeichnisses gehen oder gehen nicht umzunennen
- Dateien ist das Archivbit gesetzt
- es werden Dateinamen von der Form 2017-06-23_ACDF_DSCF3203.mpo erzeugt oder JPG usw.
- es wird aber kein Fehler gemeldet (Windows)

Die RenameFile - Routine gibt eine Zahl oder 0 zurück, falls ein Fehler passiert. Wenn dieser Fall praktisch
vorgesehen ist, muß es doch Mittel dagegen geben.
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: RenameFile funtioniert nicht

Beitrag von Kiffi »

Hallo Heinz,

zu Debug-Zwecken kannst Du Dir ja mal die Namen der Dateien ausgeben lassen, bei denen ein RenameFile() fehlschlägt. Vielleicht lässt sich da ein Muster erkennen.

Code: Alles auswählen

Result = RenameFile(OldFilename$, NewFilename$)

If Result = 0
	Debug "RenameFile() fehlgeschlagen!"
	Debug "OldFilename: '" + OldFilename$ + "'"
	Debug "NewFilename: '" + NewFilename$ + "'"
	Debug "-----"
EndIf
Grüße ... Peter
Hygge
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: RenameFile funtioniert nicht

Beitrag von Nino »

Heinz Mendax hat geschrieben:Beim Debuggen ist erg manchmal 0 - dh. RenameFile funktionierte nicht.
Ich würde das Ergebnis auch im Normalbetrieb immer auswerten, nicht nur beim Debuggen. Falls Fehler auftreten, kann das Programm die Einzelheiten in eine Log-Datei schreiben und am Schluss eine kurze Meldung ausgeben.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: RenameFile funtioniert nicht

Beitrag von GPI »

Eventuell ist die Datei noch geschützt - weil irgendein Programm noch zugreift (Virenscanner, Upload, wasweisichdenn).

Probier mal folgendes:

Code: Alles auswählen

for loop = 1 to 5 
  Result = RenameFile(OldFilename$, NewFilename$)
  if result
    break
  else
    delay(100)
  endif
next
if result=0
  debug "[ERROR]"+Oldfilname$+" => "+NewFilename$
endif
Hier werden dann 5 Versuche unternommen - und maximal eine halbe Sekunde gewartet.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Heinz Mendax
Beiträge: 50
Registriert: 29.03.2013 12:25
Wohnort: Eisenach

Re: RenameFile funtioniert nicht

Beitrag von Heinz Mendax »

Hallo !

Habe die Fehlerabfrage mit Delay eingebaut. Das Umnennen klappt nicht bei bestimmten Dateien eines Verzeichnisses.
Vielleicht ist doch eine Datei geöffnet o.ä. , da die Bilder kurz vorher angezeigt werden mit:

Code: Alles auswählen

  Ergebnis = ResizeImage(1, w3, h3, #PB_Image_Smooth)
 If image ;(2)
    OpenWindow(1,0,0,w3,h3,a1$,#PB_Window_ScreenCentered)        (a1$ ist der Pfad des Bildes)
    ImageGadget(1,0,0,w3,h3,Ergebnis) 

       Repeat 
      Select WaitWindowEvent() 
        Case #PB_Event_CloseWindow :CloseWindow(1): Goto weiter
        Case #WM_RBUTTONUP         : CloseWindow(1): Goto weiter    
      EndSelect 
     ForEver 
  EndIf ;(2)
Ein Click mit der Maus schließt das Fenster. Ist hier im Code etwas unvollständig, was die Datei nicht immer freigibt.
mfG
Heinz

NicTheQuick: Code-Tags hinzugefügt
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: RenameFile funtioniert nicht

Beitrag von GPI »

Heinz Mendax hat geschrieben: Case #PB_Event_CloseWindow :CloseWindow(1): Goto weiter
Case #WM_RBUTTONUP : CloseWindow(1): Goto weiter
Bitte sag mir, das du nicht ernsthaft aus einer schleife mittels Goto rausspringst....

Grausam, einfach nur grausam.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
TroaX
Beiträge: 661
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: RenameFile funtioniert nicht

Beitrag von TroaX »

Sah für mich eher nach Pseudo-Code aus das Goto :mrgreen:

Aber bau mal nach der Anzeige des Fensters und dem Bild ein Delay von vllt. 50 ms ein. Danach sollte das File eigentlich frei sein. Wenn das nicht der Fall ist, kann es sein, das du vergisst, nach dem Laden der Datei selbige wieder zu schließen?
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Antworten