amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Character im Filenamen zählbar? [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

16.06.2005, 20:05 Uhr

Crystal
Posts: 412
Nutzer
Hallo an die Herren Programmierer! :)

Obige Frage bezieht sich auf lange Dateinamen, wie z.B. bei MP3 und Videofiles.
Um z.B. einen langen Namen durch simples Umbenennen zu kürzen, weil das Filesystem das u.U. sonst nicht mitmacht, wäre es hilfreich zu wissen, wieviele Characters vor dem Punkt stehen.

Gibts dafür schon Programme, die man z.B. unter DOpus in die Knopfleiste integrieren könnte?
Datei klicken, Knopf klicken, Anzahl der Chars in separatem Ausgabefenster anzeigen lassen?
Oder sind euch solche Programme unter Windows/Linux bekannt?

Wären auch Leerzeichen zählbar? AFAIK generiert die SPACE-Taste auch einen Char-Code.

Der Grund, warum ich frage ist der, daß ich mir ein MP3 von einer Win-Partition auf ein WinUAE-Hardfile kopiert habe.
Nun bekomme ich das File aufgrund der Namenslänge nicht mehr richtig aus DOpus Mag II heraus gelöscht.
Die Datei wird beim nochmaligem Löschversuch zwar nicht mehr gefunden, aber der Eintrag im Dateilister bleibt bestehen. Das installierte Filesystem ist das OS3.9-FFS (mit BB2 und ROM-Update betrieben).

Ich werde jedenfalls ein neues Hardfile erstellen und die übrigen Files draufkopieren und das alte HDF löschen.

Wenn ich das falsche Forum getroffen habe, dann sorry.
Ich bin der Meinung, daß das ins Coding-Board gehört. ;)

Bin übrigens kein Coder, der sich das evtl. selbst hätte schreiben können.

Bin gespannt um eure Meinung. :)



[ - Antworten - Zitieren - Direktlink - ]

16.06.2005, 22:14 Uhr

thomas
Posts: 7716
Nutzer

FFS kann nur 32 Zeichen, du solltest schon SFS nehmen.

Bei Magellan mußt du die maximale Anzahl Zeichen einstellen. Default ist 30, glaube ich.

Im übrigen werden längere Dateinamen einfach abgeschnitten. Wenn du eine Datei nicht löschen kannst, dann muß das an etwas anderem liegen. Vermutlich ist bei DOpue, wie gesagt, die Länge nicht so hoch eingestellt, wie das FileSystem es kann.

Kann auch sein, daß du Joker-Zeichen im Dateinamen verwendet hast, dann kann DOpus es auch nicht löschen. Jokerzeichen sind # ? ( ) | und ~. Du mußt die Dateien dann aus der Shell löschen, indem du statt den Jokerzeichen jeweils ein ? eingibst.

Gruß Thomas
--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

16.06.2005, 23:05 Uhr

Crystal
Posts: 412
Nutzer
Zitat:
Original von thomas:
Bei Magellan mußt du die maximale Anzahl Zeichen einstellen. Default ist 30, glaube ich.


Ja, stimmt auch...tatsächlich. Ist ewig her, daß man sowas mal selbst gewußt hat. :(

Zitat:
Im übrigen werden längere Dateinamen einfach abgeschnitten. Wenn du eine Datei nicht löschen kannst, dann muß das an etwas anderem liegen. Vermutlich ist bei DOpue, wie gesagt, die Länge nicht so hoch eingestellt, wie das FileSystem es kann.

Ich werds dann mal mit SFS probieren.

Zitat:
Kann auch sein, daß du Joker-Zeichen im Dateinamen verwendet hast, dann kann DOpus es auch nicht löschen. Jokerzeichen sind # ? ( ) | und ~. Du mußt die Dateien dann aus der Shell löschen, indem du statt den Jokerzeichen jeweils ein ? eingibst.

Jau, ich hatte Klammern eingegeben "...(Remix).mp3".


Ok, dann schon mal vielen Dank für das Beheben des ersten Problems. :)

Bleibt noch die Frage, wie man die Characters im Filenamen addiert...?(

[ - Antworten - Zitieren - Direktlink - ]

17.06.2005, 00:05 Uhr

NoImag
Posts: 1050
Nutzer
Zitat:
Original von Crystal:
Bleibt noch die Frage, wie man die Characters im Filenamen addiert...?(


Ein Programm dafür kenne ich nicht. Leerzeichen musst du selbstverständlich alle mitzählen.

Tschüß,


[ - Antworten - Zitieren - Direktlink - ]

17.06.2005, 08:32 Uhr

gni
Posts: 1106
Nutzer
Zitat:
NoImag:
Zitat:
Crystal:
Bleibt noch die Frage, wie man die Characters im Filenamen addiert...?(

Ein Programm dafür kenne ich nicht. Leerzeichen musst du selbstverständlich alle mitzählen.
wc (ist ein UN*X Befehl, den es sicher auch ixemulfrei für AmigaOS gibt.

[ - Antworten - Zitieren - Direktlink - ]

17.06.2005, 09:54 Uhr

Palgucker
Posts: 1342
Nutzer
@ Crystal

Man könnte auch Arexx verwenden, - hier mal so ein Grundgerüst.

code:
/* Filename-length */

Parse Arg FileName
If C2D(Substr(FileName,1,1))=34 Then FileName=SUbStr(FileName,2,Length(FileName)-2)
If Pos(":",Filename,1)=0 & Pos("/",Filename,1)=0 Then Do
NameLength=Length(FileName)
End
Else Do
NameLength = Pos("/",Reverse(Filename),1) - 1
If NameLength = -1 Then NameLength = Pos(":",Reverse(Filename),1) - 1
End
/* Die nächste Zeile nur, um die Zeichenanzahl vor dem Punkt zu ermitteln */
NameLength = NameLength - Pos(".",Reverse(Filename),1)
Say NameLength


mfg Palgucker


[ - Antworten - Zitieren - Direktlink - ]

17.06.2005, 10:55 Uhr

thomas
Posts: 7716
Nutzer
@Palgucker:

Sorry für die Kritik, aber umständlicher hast du es nicht hinbekommen ?

code:
/* rexx */

parse arg filename

filename = strip(filename,'B','"')

x = lastpos('/',filename)
if x = 0 then
	x = lastpos(':',filename)

filename = substr(filename,x+1)

x = lastpos('.',filename)
if x > 0 then
	filename = left(filename,x-1)

say "Länge von" filename "ist" length(filename)


Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

17.06.2005, 13:47 Uhr

Palgucker
Posts: 1342
Nutzer
@ Thomas

quote:

Sorry für die Kritik, aber umständlicher hast du es nicht hinbekommen ?

Doch! Ich würde auch das schaffen. ;)

Aber so ist das, wenn man mal mal nicht den gesammten Arexx-Befehlsschatz im Kopf hat.
An Strip hätte ich denken können, aber Lastpos habe ich noch nie verwendet - lieber habe ich wohl das Rad nochmal erfunden.

Aber jetzt!

code:
/* GetFilenameLength */

Parse Arg FileName

FileName = strip(FileName,B,'"')

If Pos(".",FileName)>0 Then FileName = DelStr(FileName,Pos(".",FileName))

FileName=Reverse(FileName)

If Pos(":",FileName)>0 Then FileName = DelStr(FileName,Pos(":",FileName))

If Pos("/",FileName)>0 Then FileName = DelStr(FileName,Pos("/",FileName))

Say Length(FileName)


Besser?

Du siehst, es führen wohl viele Wege nach Rom und ich bin wohl ein Reverse-Fan. :glow:

mfg Palgucker


[ Dieser Beitrag wurde von Palgucker am 17.06.2005 um 16:40 Uhr editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

17.06.2005, 16:17 Uhr

Crystal
Posts: 412
Nutzer
@thomas & palgucker

Ich hab jetzt mal eure Scripte ausprobiert.
Thomas' Script funzt so, wie ich mir's vorgestellt habe. (EDIT: Ich mußte nur die Apostrophe ändern. Hab das Script gesnapped und die Fehlermeldung war: +++ Error 5 in line 5: Unmatched quote, Command returned 10/5: Unmatched quote)

In der Shell "rx filescript smartfilesystem.info" eingegeben - Ergebnis war "Länge von smartfilesystem ist 15". Prima! :)
Muß mal schauen, wie ich mir das auf einen Knopf unter DOpus lege.


Palgucker's Script funzt allerdings nach dieser Syntax "rx script file" nicht.
Da sagt er mir: "Command returned 5/1: Program not found"

Was fehlt denn da?

Ich hab übrigens jetzt nur die zweite Version von dir getestet, Palgucker. :)

[ Dieser Beitrag wurde von Crystal am 17.06.2005 um 16:28 Uhr editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

17.06.2005, 16:30 Uhr

Palgucker
Posts: 1342
Nutzer
@ Crystal

quote:

Palgucker's Script funzt allerdings nach dieser Syntax "rx script file" nicht.
Da sagt er mir: "Command returned 5/1: Program not found"


Arghhh

Habe den "einleitenden Kommentar (/* */)vergessen - ohne diesen wird es nicht als Arexx-Script erkannt.

mfg Palgucker

[ - Antworten - Zitieren - Direktlink - ]

17.06.2005, 16:34 Uhr

thomas
Posts: 7716
Nutzer
@Crystal:

Das mit den Hochkommas liegt hier am Forum. Ich habe sie richtig eingetippt.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

17.06.2005, 16:35 Uhr

Crystal
Posts: 412
Nutzer
@Palgucker:

Aha. Den wollte ich beim thomas schon weglassen. :D
Gut, daß ich's nicht gemacht hab, sonst hätte er mir die Ohren lang gezogen. :lach:

Nu gehts auch bei deinem Script. Vielen Dank! ;)

[ - Antworten - Zitieren - Direktlink - ]

17.06.2005, 16:39 Uhr

Crystal
Posts: 412
Nutzer
@thomas:

Kein Problem, sowas dachte ich mir schon (mit dem Forum). :)

[ - Antworten - Zitieren - Direktlink - ]

17.06.2005, 17:36 Uhr

Palgucker
Posts: 1342
Nutzer
@ thomas

quote:

Das mit den Hochkommas liegt hier am Forum. Ich habe sie richtig eingetippt.

Wenn ich dran denke, wandele ich diese Anführungszeichen meist schon vorher in das entsprechende entity. Meistens in ', aber ’ funktioniert mit Aweb auch. Allerdings bin ich mir nicht so sicher, ob dieses auch auf allen Browsern so ankommt. Beschwert hat sich aber auch noch keiner.

mfg Palgucker

[ - Antworten - Zitieren - Direktlink - ]

17.06.2005, 21:57 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Palgucker:
Wenn ich dran denke, wandele ich diese Anführungszeichen meist schon vorher in das entsprechende entity. Meistens in ', aber ’ funktioniert mit Aweb auch. Allerdings bin ich mir nicht so sicher, ob dieses auch auf allen Browsern so ankommt. Beschwert hat sich aber auch noch keiner.

Nimm ', das ist standardkonform UND funktioniert, während ’ theoretisch das Unicode-Zeichen ’ produziert, was nicht unbedingt das gleiche Resultat bringt.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

17.06.2005, 22:44 Uhr

Palgucker
Posts: 1342
Nutzer
@ Holger

quote:

Nimm ', das ist standardkonform UND funktioniert,...

Werd'ich machen - danke für den Tip

mfg Palgucker

[ - Antworten - Zitieren - Direktlink - ]

18.06.2005, 16:20 Uhr

Robin
Posts: 1056
Nutzer
Wenn es viele Moeglichkeiten gibt, dann
auch eine von mir ;)

/* smaller */
parse arg name
l="rmh.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
file = rmh_filepart(name)
p = lastpos(".",file) - 1
if p > 0 then file = substr(file,1,p)
say length(file)
--
my.morphosi.net

[ - Antworten - Zitieren - Direktlink - ]

18.06.2005, 18:32 Uhr

Palgucker
Posts: 1342
Nutzer
@ Robin

Nicht schlecht, aber probier mal "ram:ho ho/test".
Hiermit wirst auch Du zum "strippen" verdonnert. ;) :lach:

mfg Palgucker

[ - Antworten - Zitieren - Direktlink - ]

18.06.2005, 19:04 Uhr

Robin
Posts: 1056
Nutzer
@Palgucker:

Ups :)
--
my.morphosi.net

[ Dieser Beitrag wurde von Robin am 18.06.2005 um 19:08 Uhr editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

02.07.2005, 22:09 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Ich habe noch eine andere Möglichkeit gefunden, die setzt aber vorraus
dass die Datei dessen Länge ermittelt werden soll auch existiert.

code:
.KEY NAME/F
.BRA {
.KET }

c:list >t:tempname "{NAME}" LFORMAT "%m"
eval >t:templen 'c:list t:tempname LFORMAT "%l"' - 1
echo "Länge des Filenamens ohne Erweiterung 'type t:templen'"
delete >nil: t:tempname 
delete >nil: t:templen


[ Dieser Beitrag wurde von DariusBrewka am 02.07.2005 um 22:11 Uhr editiert. ]

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Character im Filenamen zählbar? [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.