[R] Script pour récupérer le nom d'un fichier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
mokoto
Niveau 2
Niveau 2
Messages : 21
Enregistré le : jeu. 27 janv. 2011 10:31
Status : Hors ligne

[R] Script pour récupérer le nom d'un fichier

#1

Message par mokoto »

Bonjour,

Je cherche à créer un script qui récupérer le nom d'un fichier sans extension de type "fichier" à la racine d'un lecteur USB.

Par exemple quand j'insère ma clé USB qui prend une lettre au hasard, le script que je lance retrouve automatiquement le nom du fichier GENERIC.

Le but est de créer un petit lanceur pour truecrypt.

Merci d'avance pour votre aide
Modifié en dernier par mokoto le ven. 28 janv. 2011 10:53, modifié 1 fois.
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Script pour récupérer le nom d'un fichier

#2

Message par scorp84 »

Bonjour mokoto,

J'utilise aussi Truecrypt qui est génial et j'ai sur ma clé un volume TC que je lance avec un script TC recompilé sous Autoit.

TC a un assistant pour créer des volumes sur un média amovible (Tools > Traveler Disk Setup).

Que cherches tu à faire exactement ? Lancer la fenêtre du mot de passe d'ouverture de ton volume à l'insertion de la clé ?

Dis nous en un peu plus que l'on puisse répondre exactement ce que tu cherches.

Amicalement.

BM
mokoto
Niveau 2
Niveau 2
Messages : 21
Enregistré le : jeu. 27 janv. 2011 10:31
Status : Hors ligne

Re: [..] Script pour récupérer le nom d'un fichier

#3

Message par mokoto »

En fait il faut que l'utilisation de TrueCrypt soit la plus simple possible.

Voici comment se compose l'arborescence de la clé (il faut que ce soit comme ça) :

Racine ----- TrueCrypt
| |
| |_ le programme original portable
|
|_ Un fichier sans extension nommé pour l'exemple GENERIC (le volume dont le nom est modifiable)
|_ Lanceur du programme qui lance le fichier GENERIC
|_ Programme pour déconnecter le volume

En ce moment j'utilise un script vbs transformé en exécutable qui marche plutôt bien mais j'utilise une version commercial limité pour créer l'exécutable dont j'ai pas la licence . J'ai fait le programme en Visual Basic mais les ordinateurs n'ont pas .NET Framework....

Je veux transposé mon programme en autoIt qui est libre de droit.

Donc déjà je sais lancé mon programme :

Code : Tout sélectionner

Run ( "\TrueCrypt\TrueCrypt.exe /v GENERIC /l /m rm /auto /q /e" )
Le problème c'est que le nom GENERIC doit être modifiable à volonté sans passé par une fenêtre qui demande le nom du fichier, bien sûr c'est possible de lui donné une extension style ".tc" si c'est nécessaire. Au final l'utilisateur ne doit avoir que la fenêtre pour rentrer son mot de passe (le lanceur) et l'executable pour déconnecter le volume.
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Script pour récupérer le nom d'un fichier

#4

Message par scorp84 »

Si j'ai bien compris tu as sur la clé 1 seul fichier TC.

Je te conseille de lui donner l'extension TC (j'avais rencontré des soucis en cas de sauvegarde de la clé avec les fichiers sans extensions).

1. Tu récupères la lettre de ta clé avec :

Code : Tout sélectionner

StringLeft(@ScriptDir,3)
2. Tu lances une recherche sur ta clé avec une fonction style _FileListToArrayEx en ne cherchant que l'extension .tc :
http://www.autoitscript.fr/forum/viewtopic.php?p=34893

Code : Tout sélectionner

#include<Array.au3>
#include<FileListToArrayEx.au3>

$ar_Array = _FileListToArrayEx (StringLeft(@ScriptDir,3), "*.tc", 0, "", True)

_ArrayDisplay($ar_Array)
3. Tu récupères le nom de ton fichier pour lancer ta ligne de commande :

Code : Tout sélectionner

$cmd_chaine='TrueCrypt.exe /q background /lR /m rm /v "'& $ar_Array[1] &'"'
Run(@ComSpec & " /c " & $cmd_chaine, "", @SW_HIDE)
En espérant avoir pu t'aider.

Amicalement.

BM
mokoto
Niveau 2
Niveau 2
Messages : 21
Enregistré le : jeu. 27 janv. 2011 10:31
Status : Hors ligne

Re: [..] Script pour récupérer le nom d'un fichier

#5

Message par mokoto »

Merci pour ton aide j'en suis là :

Code : Tout sélectionner

$Lettre = StringLeft(@ScriptDir,3)

$ar_Array = _FileListToArrayEx (StringLeft(@ScriptDir,3), "*.tc", 1, "", True)

Run ( "\TrueCrypt\TrueCrypt.exe /v" & $ar_Array & "/l /m rm /auto /q /e" )
Le problème c'est que je ne sais pas comment récupérer le résultat de la recherche puisque $ar_Array retourne un tableau.
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Script pour récupérer le nom d'un fichier

#6

Message par scorp84 »

Regarde mon point 3 ;-)
$ar_Array[1]
Amicalement.

BM
mokoto
Niveau 2
Niveau 2
Messages : 21
Enregistré le : jeu. 27 janv. 2011 10:31
Status : Hors ligne

Re: [..] Script pour récupérer le nom d'un fichier

#7

Message par mokoto »

Merci beaucoup pour ton aide voilà les scripts finaux :

Lanceur normal :

Code : Tout sélectionner

#include<Array.au3>
#include<FileListToArrayEx.au3>

$Lettre = StringLeft(@ScriptDir,3)

$ar_Array = _FileListToArrayEx (StringLeft(@ScriptDir,3), "*.tc", 1, "", True)

Run ( "\TrueCrypt\TrueCrypt.exe /v " & $ar_Array[1] & " /l /m rm /auto /q /e" )
Lanceur avec lettre spécifique :

Code : Tout sélectionner

#include<Array.au3>
#include<FileListToArrayEx.au3>

$Lettre = StringLeft(@ScriptDir,3)

$ar_Array = _FileListToArrayEx (StringLeft(@ScriptDir,3), "*.tc", 1, "", True)

$lettre = InputBox("Lettre du lecteur", "FACULTATIF: entrez une lettre de lecteur pour monter votre fichier. ATTENTION la lettre ne doit pas être déja utilisée par un périphérique ou un lecteur réseau. Exemple : V.")

Run ( "\TrueCrypt\TrueCrypt.exe /v " & $ar_Array[1] & " /l " & $lettre & " /m rm /auto /q /e" )
Déconnexion du volume :

Code : Tout sélectionner

Run ( "\TrueCrypt\TrueCrypt.exe /q /d" )
Tout fonctionne :)
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [R] Script pour récupérer le nom d'un fichier

#8

Message par scorp84 »

Bonjour,

Tant mieux si j'ai pu t'aider.

Penses juste à mettre [R] dans ton premier post pour que les autres puissent savoir que le sujet est résolu.

Amicalement.

BM
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [R] Script pour récupérer le nom d'un fichier

#9

Message par GaRydelaMer »

Bonjour

tu peux aussi proposer une liste des lettres disponible.

Local $aDrives = DriveGetDrive("All") te retourne un tableau des lettres déjà utilisé.

Ensuite tu parcours les lettres de A(code ascii 65) à Z(code ascii 90), si c'est pas dans le tableau tu l'ajoute à une ListBox ou un tableau:

Code : Tout sélectionner

Local $aDrives = DriveGetDrive("All")
_ArrayDisplay($aDrives)
Local $aDrivesDispo[1]

For $Ascii = 65 To 90
    If _ArrayFindAll($aDrives, Chr($Ascii) & ":", 1) = -1 Then
        ReDim $aDrivesDispo[UBound($aDrivesDispo) + 1]
        $aDrivesDispo[UBound($aDrivesDispo) - 1] = Chr($Ascii) & ":"
        $aDrivesDispo[0] += 1
        ; ajoute aussi dans la liste
        _GUICtrlListBox_AddString($ListBox, $aDrivesDispo[$i])
    EndIf
Next
_ArrayDisplay($aDrivesDispo)

For $i = 1 To $aDrivesDispo[0]
    _GUICtrlListBox_AddString($ListBox, $aDrivesDispo[$i])
Next
mokoto
Niveau 2
Niveau 2
Messages : 21
Enregistré le : jeu. 27 janv. 2011 10:31
Status : Hors ligne

Re: [R] Script pour récupérer le nom d'un fichier

#10

Message par mokoto »

Bonjour GaRydelaMer,

Merci pour ta suggestion, c'est une super idée mais je débute autoIt il va me falloir du temps pour que je puisse l'intégrer dans mon code :?
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1039
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [R] Script pour récupérer le nom d'un fichier

#11

Message par walkson »

Bonjour,
J'ai trouvé Launcher pour Truecrypt, une solution complète basée sur Autoit à ce lien:
http://blog.usboffice.kr/?p=210
et voici le code:
► Afficher le texte
Le principe est simple, le launcher en ZIP crée 3 dossiers. Dans Program files, vous avez le sous dossier Truecrypt où vous importez le logiciel Truecrypt.
Vous créez le container dans le même dossier.
En cliquant sur TC_Loader.exe, une MSbox s'ouvre pour indiquer le container et la lettre du lecteur. nouvelle fenêtre pour le mot de passe.
Par la suite, en cliquant sur TC_Loader.exe la fenêtre pour le mot de passe s'ouvre uniquement sans autre forme. (le chemin est inscrit sur un setting.ini)

Petite remarque sans rapport, le site est coréen dont http://www.usboffice.kr/ est la pièce maitresse avec un forum autoit. Google traduct est conseillé :roll:
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre