Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Filename Shortener


  • Please log in to reply
25 replies to this topic
strobo
  • Members
  • 359 posts
  • Last active: Mar 10 2015 08:13 PM
  • Joined: 19 Jun 2012

@Seidenweber
    Du sollst nicht verleugnen den Hash, den Heilsbringer in allen
    Lebenslagen! wink.png

@Alibaba
    Index und Random? Wahrscheinlich hab ich mich verlesen.

FYI, bei grossen .ini Dateien machten die ini* Kommandos auf meiner
Maschiene schlapp, wobei diese inis viele Sektionen (>1000) hatten, was hier
nicht der Fall ist (viele Keys).

@ Johnny
    Wieviele Pfade sollen inidiziert werden? Wieviel RAM willst du
    opfern?

Einen Index kann man nach dem Motto (sqlite, aber auch ohne sqlite
realisierbar):
    file_pathes(id INTEGER PRIMARY KEY AUTOINCREMENT, original_path UNIQUE)
anlegen.
Kurze Pfade erhält man dann einfach über eine AHK Funktion, die die
AHK Nummer id-1 in seine 36-adic [a-z0-9] Darstellung (String) überführt, sowas
fliegt samt Umkehrfunktion massenweise hier im Forum rum.
Von der maximalen Wortlänge her ist diese Kodierung optimal.

Nur mal so als Gegenentwurf zu irgendwelchen Hash-Wunderfunktionen.

 


Regards,
Babba

jNizM
  • Members
  • 928 posts
  • Last active: Jan 12 2018 09:23 AM
  • Joined: 01 Aug 2012
zb sowas? (auf die schnelle ne gui hingeklatscht)
unbenanntg1s8yjfia6.png
[AHK] 1.1.27.04 x64 Unicode | [WIN] 10 Pro (Version 1709)
My GitHub Profile | Donations are appreciated if I could help you

nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

 

Das ganze lässt sich eigentlich nur sinnvoll über einen einmal festgelegten Index lösen, wie URL-Shortener das auch machen.

Dass er einen Index erstellen muss ist so oder so klar, auch bei Hashes da diese sich nicht zurückrechnen lassen.

 

 

Die Frage ist aber, WIE lang. NTFS erlaubt Dateinamen bis zu 255 Zeichen Länge, bestehend aus beinahe dem gesamten Unicode-Zeichensatz. 

Ja aber Windows erlaubt viele nicht: BTW meinst du ANSI?

SKANS "Hidden Folder" die einfach ... genannt wird und dann nicht mehr einfach so geöffnet werden kann.

 

Heißt ja auch nicht das er einen Standard Hash benutzen muss.

Man könnte auch einfach den String mit sich selber Xoren was dann je nachdem wie man es macht zu einem 8-4 Byte Langem Hash führt. 
Der Weg wie er Hasht und ob er hasht ist eig egal.

er könnte auch einfach aufwärts Zählen das erste beginnt bei 0000 und das nächste bei 0001.

Er könnte auch wenn er Probleme hat sich diese zu merken (Liste vs. Namen) mit Modulo den nächsten Namen mit Offset berechnen.


Visit the new forum ahkscript.org.

http://ahkscript.org


gregster
  • Members
  • 283 posts
  • Last active: Nov 09 2015 03:08 AM
  • Joined: 19 Mar 2009

Hmm, wofür soll das denn eigentlich alles gut sein? Bei URLs kann ich ja verstehen, dass man diese in einfacher und kürzestmöglicher Weise an andere Nutzer weitergeben möchte.

Aber ist es "auf der heimischen Festplatte" nicht wesentlich effektiver, einfach die herkömmlichen Windows-Verknüpfungen zu verwenden? (lnk-Endung) Den Namen der Verknüpfung kann man natürlich auch zufällig oder möglichst kurz wählen, aber wozu? Wäre es auf der heimischen Festplatte nicht eher besser, zumindest aussagekräftige Verknüpfungen zu verwenden, wenn man es "mit ganz, ganz langen Dateinamen in ganz, ganz verschachtelten Verzeichnissen" zu tun hat?



Johnny R
  • Members
  • 54 posts
  • Last active: Sep 18 2015 05:36 AM
  • Joined: 03 Nov 2012
Aber ist es "auf der heimischen Festplatte" nicht wesentlich effektiver, einfach die herkömmlichen Windows-Verknüpfungen zu verwenden?

Glaub mir, ich weiß was ich will.

 

Ich werde mich demnächst mal ans Werk machen und berichten.



gregster
  • Members
  • 283 posts
  • Last active: Nov 09 2015 03:08 AM
  • Joined: 19 Mar 2009

 

Glaub mir, ich weiß was ich will.

 

Das glaub ich dir. Nur ist es meist wesentlich einfacher, Ratschläge zu einem Projekt zu geben, wenn man weiß, wo der Weg überhaupt hingehen und was Sinn und Zweck der Übung sein soll. Ich lern schließlich auch gern dazu...



Alibaba
  • Members
  • 435 posts
  • Last active: Nov 19 2014 04:21 PM
  • Joined: 01 Nov 2012

@Alibaba
    Index und Random? Wahrscheinlich hab ich mich verlesen.

 

Vielleicht. wink.png

Ich habe mich vielleicht unpassend ausgedrückt. Es ist mir schon klar, dass die Einträge des Index konstant sind, allerding meine ich dass die Auswahl des Schlüssels zufällig passieren könnte, obwohl mir gerade klar wird, dass normales hochzählen wahrscheinlich effektiver wäre. Naja hab den Wald vor Bäumen nicht gesehen.


Find the recent autohotkey version here: ahkscript.org


Johnny R
  • Members
  • 54 posts
  • Last active: Sep 18 2015 05:36 AM
  • Joined: 03 Nov 2012

So, hier das Ergebnis einer heutigen 21-Stunden-Bahnfahrt nach Herne, die Funktion FileKonvert:
(Warum funktioniert hier eigentlich der Code-Tag nicht?)
 
 

; ***************************************************BOF**********************************************************

; Erstellt nach Art eines Url-Shorteners per Randomstring geshortete Dateinamen,
; löst sie umgekehrt wieder auf und speichert den dazugehörenden Index in einer ini-Datei.
; Verwendet das Skript RandomString.ahk ; vgl. http://goo.gl/rFncHE

SLFileName = C:\Windows\Win.ini ; Beispiel eines langen Dateinamens

; Ini-Datei mit den Indices:
IniFile = %A_ScriptDir%\FShorten.ini

#SingleInstance Ignore
#Include RandomString.ahk ; vgl. http://goo.gl/rFncHE

RückG := FileKonvert(SLFileName, IniFile)
MsgBox %RückG%
Return

; Konvertiert lange zu kurzen Dateinamen und umgekehrt:
FileKonvert(SLFileName, IniFile)
{
   ; *****Kurz->Lang*******
   IfInString, SLFileName, %SFPräfix% ; Wenn das ShortFile-Präfix enthalten ist
   {
      StringReplace, SLFileName, SLFileName, %SFPräfix%,,A ; Entfernt das Präfix
      x := ReadShort(SLFileName, IniFile) ; Liest den Shortnamen
      if not FileExist(x) ; Wenn die Datei nicht existiert
         Return ; Leerstring
      Return %x%
   }
   ; *****Lang->Kurz*******
   Else
   {
      if not FileExist(SLFileName) ; Prüft, ob die Langname-Datei überhaupt existiert.
         Return ; Leerstring
      ; ***************************
      ; Prüft, ob die Datei schon einmal geshortet wurde:
      x := ReadLong(SLFileName, IniFile)
      if StrLen(x)>0
         Return (SFPräfix . x) ; Wenn die Datei schon einmal geshortet wurde bleibt der alte ShortName erhalten.
      ; ***************************
      ; Entwickelt den Shortfile-String:
      Loop, 10 ; Das sollte reichen
      {
         ZufallString := SC_RandomString("M6 L4 D2") ; Entwickelt den Randomstring (6 Char, 4 kleine Buchstaben, 2 Ziffern).
         x := ReadShort(ZufallString, IniFile)
      } Until (x=0)
      ; Schreibt in die beiden Sektionen der ini-File:
      IniWrite, %SLFileName%, %IniFile%, SToL, %ZufallString% ; Schreibt nach SToL
      IniWrite, %ZufallString%, %IniFile%, LToS, %SLFileName% ; Schreibt nach LToS
      Return (SFPräfix . ZufallString) ; Rückgabestring mit Präfix
   }
   Return
}

; Liest den Lang- und ermittelt den Kurznamen:
ReadLong(LongN, IniFile)
{
   IniRead, RückG, %IniFile%, LToS, %LongN%, FEHLER
   IF (RückG = "FEHLER")
      Return
   Return %RückG%
}

; Liest den Kurz- und ermittelt den Langnamen:
ReadShort(ShortN, IniFile)
{
   IniRead, RückG, %IniFile%, SToL, %ShortN%, FEHLER
   IF (RückG = "FEHLER")
      Return
   Return %RückG%
}
; ***************************************************EOF**********************************************************


Alibaba
  • Members
  • 435 posts
  • Last active: Nov 19 2014 04:21 PM
  • Joined: 01 Nov 2012

(Warum funktioniert hier eigentlich der Code-Tag nicht?)


Das ist eines der vielen special features, die dem Forum seine unverwechselbare identität verleihen.

Find the recent autohotkey version here: ahkscript.org


nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

SLFileName = C:\Windows\Win.ini ; Beispiel eines langen Dateinamens

are_you_kidding_me_rage_face_meme_poster

Visit the new forum ahkscript.org.

http://ahkscript.org


Johnny R
  • Members
  • 54 posts
  • Last active: Sep 18 2015 05:36 AM
  • Joined: 03 Nov 2012

Ist ja gut. Ich gebe zu, das Beispiel höchst ungeschickt gewählt zu haben. Aber wenigstens habe ich etwas zur Erheiterung beigetragen...