Ordner verschlüsseln / Dateinamen unkenntlich machen

Mailyn

Erfahrenes Mitglied
Dateinamen per Cäsar verschlüsseln

Hi,

Mein erhofftes Ziel: Die Dateinamen in einem Ordner uneinsehbar zu machen.
Mögliche Lösungen: - Dateinamen beim Beenden des Programmes alle durch z.B. Cäsar-Verschlüsselung unlesbar machen, beim Öffnen wieder lesbar machen
 
Zuletzt bearbeitet:
Hi,

dein zweiter Ansatz (Cäsar-Code) lässt sich recht einfach umsetzen. Du öffnest den Ordner (und rekursiv natürlich auch die Unterordner) und benennst die Dateien um. Das FileSystemObject müsste dazu eigentlich schon von sich aus Funktionen anbieten. Zum Umbenennen iterierst du einfach über die Anzahl der Zeichen im Dateinamen und verschiebst den ASCII-Code von jedem Zeichen um x nach oben oder unten.

Grüße, D.
 
Stand der Dinge:

- Alle Dateien der (Unter)Ordner werden mit voller Pfadangabe in einer Liste (List1) angezeigt
(z.B. C:\Programme\Datei.exe)
- Per Cäsar könnte ich den Dateinamen so unlesbar machen:
Code:
Function encode(str As String)
Dim str_crypt$
Dim i%
    
    For i = 1 To Len(str)
        str_crypt = str_crypt & Chr(Asc(Mid(str, i, 1)) - 1)
    Next i
    
    encode = str_crypt
End Function

Private Sub Command2_Click()
            Dim verschlüsselter_dateiname$
            verschlüsselter_dateiname = List1.Text 'C:\Programme\Datei.exe
'wird komplett in Cäsar verschlüsselt
            verschlüsselter_dateiname = encode(verschlüsselter_dateiname)
            name list1.txt as verschlüsselter_dateiname
End Sub

Das Problem:

- Wie kann ich erreichen, dass er die Liste Eintrag für Eintrag durchgeht; Und dann nicht den ganzen Pfad, SONDERN nur den Dateinamen verschlüsselt?
 
Zuletzt bearbeitet:
Ist die Frage jetzt noch wie du alle Unterordner erwischt? Dann wäre die Antwort: rekursiv!

Code:
Public oFSO As New FileSystemObject

Private Sub Command1_Click()
ScanDirs "D:\-=Daten=-"
End Sub

Public Function ScanDirs(ByVal sDir As String)
For Each vSubDir In oFSO.GetFolder(sDir).SubFolders
  Debug.Print vSubDir
  ScanDirs vSubDir
Next
End Function


Ach, du meinst nur den Namen des Ordners!
Du könntest ganz einfach
Code:
verschlüsselter_dateiname = List1.Text
gegen
Code:
verschlüsselter_dateiname = oFSO.GetFolder(List1.Text).Name
ersetzen
 
Zuletzt bearbeitet:
Vielen Dank für deine Antwort :)

Leider mein nächstes (und letztes) Problem:
In List1 wird "C:\Ordner\Unterordner\Datei.exe" angezeigt.
Folgend wird daraus der Dateiname "Datei.exe" extrahiert
(fso.Getfile(List1.Text).Name) und per Cäsar verschlüsselt.

Das Umbenennen der Datei ist das Problem.
Code:
name list1.text as ' nur Pfad  & "\" & verschlüsselter_dateiname

Wie kann ich aus der Liste nur den Pfad, ohne Dateinamen lesen?
 
Zuletzt bearbeitet:
Hi,

wenn du an der Stelle noch den Dateinamen ohne Pfad hast, kannst du die Länge davon benutzen, um aus dem Listeneintrag nur den Pfad zu bekommen. Lösch einfach die letzten x Zeichen aus dem kompletten Dateinamen, der in der Liste steht, wobei x die Länge des Dateinamens ohne Pfad ist. Und übrig bleibt der Ordner.

Visual Basic:
Ordnername = DeleteString(DateinameMitPfad, Len(DateinameMitPfad) - Len(DateinameOhnePfad), Len(DateinameOhnePfad))

Grüße, D.
 
Beim Ausführen kommt es leider zur Fehlermeldung:
"Fehler beim Kompilieren: Sub oder Function nicht definiert"

Dabei wird auf das "DeleteString" verwiesen.
 
Morgen,

sorry, hab da bei Google wohl was durcheinander gebracht. Muss an der Uhrzeit liegen. :rolleyes: Es reicht natürlich, wenn du die Left-Funktion nimmst:

Visual Basic:
Pfad = Left(DateinameMitPfad, Len(DateinameMitPfad) - Len(DateinameOhnePfad))

Grüße, D.
 

Neue Beiträge

Zurück