Page 1 sur 1

[Ex] Quelques applications

Posté : dim. 05 févr. 2012 23:37
par ThomasM
Bonjour à tous et à toutes.

Voici quelques applications sans prétention que j'ai créées, qui, à défaut d'avoir une implémentation éblouissante (ou des noms très inspirés d'ailleurs), m'ont bien servi jusqu'ici. Donc, si ça peut être utile à quelqu'un, et bah ... autant que ça le soit :D

I Cmd_Copier_Coller

À quelques reprises, je me suis retrouvé à vouloir copier du texte dans l'invite de commande. Sauf que çà marche pas. Le résultat : une application au nom très profond (cmd_copier_coller) :

Code : Tout sélectionner

;Si une fenetre de commande n'est pas deja ouverte, on en ouvre une : 
If Not (WinActivate("C:\Windows\system32\cmd.exe", "")) Then
Run("cmd.exe")
WinWaitActive ( "C:\Windows\system32\cmd.exe" )
Endif

;On demande a l'utilisateur le texte a ajouter au moyen d'une boite de dialogue 
;dans laquelle on peut utiliser le coller : 
$commande = InputBox ( "commande a executer ?", "string" , "commande a executer") 
ControlSend("C:\Windows\system32\cmd.exe", "" , "", $commande) 
 
II Trier_Texte_Ligne_Par_Ligne

Même si je trouve ça très amusant de trier alphabétiquement les listes que j'ai sur des fichiers textes, surtout quand ils font 1000+ lignes, des fois, ça aide de pouvoir faire ça automatiquement :

Code : Tout sélectionner

#include <File.au3>
#include <Array.au3>

;On stock chaque ligne du fichier texte passé en argument dans une case du tableau $line
Local $line
_FileReadToArray($CmdLine[1], $line)

$n = $line[0]; ($line[0] designe le nombre d'autre elements du tableau $line, soit le nombre de lignes du fichier texte.)

;On tri le tableau $line avec un algorithme de tri courant (celui du tri par insertion) 
;legerement modifie pour que les lignes vides se retrouvent a la fin:

For $i = 2 To $n ;Pour chaque ligne allant de la seconde a la derniere, on la place au milieu des lignes d'avant, 
;qui sont elles triees :
    For $j = $i To 2 Step -1
        
        If StringLen($line[$j-1]) = 0 Then 
            $stock = $line[$j-1]
            $line[$j-1] = $line[$j]
            $line[$j] = $stock
            
        Else
            If StringLen ($line[$j]) = 0 Then 
    
            Else
                If $line[$j-1] > $line[$j]  Then
                    $stock = $line[$j-1]
                    $line[$j-1] = $line[$j] 
                    $line[$j] = $stock
                EndIf
            EndIf
        EndIf       
    Next
    
Next

; On ecrit le tableau dans le fichier passe en argument, en ecrasant le contenu precedant : 
$file = FileOpen($CmdLine[1],2)
For $c = 1 To $n
    FileWrite($file, $line[$c] & @CRLF)
Next    
FileClose($file)
 
III Eclater

Parfois il arrive qu'un dossier devienne inutile. Dans ce cas, on coupe son contenu, on le colle dans le répertoire parent, et on supprime le dossier alors vide. Et ça prend du temps. Comme c'est un truc qui m'arrive souvent, j'ai créé une petite application pour ça :

Code : Tout sélectionner

Script Function: Move all files/Folders from inside a given Folder to the parent Folder.
Requirements : RecFileListToArray.au3 
Syntax: _Eclater($SourcePath, $overwrite)
Parameters : $SourcePath - path of the folder to be explode.  Can not end in \ .
$overwrite : 0 if you don't want to overwrite files in the parent directory. 1 Otherwise. 

#include<Array.au3>
#include<RecFileListToArray.au3>

Func _Eclater($SourcePath,$overwrite)

;On cree l'adresse de la destination(repertoire parent) :
$Array = StringSplit( $SourcePath, "\" )

$DestinationPath = ""
For $i = 1 To ($Array[0]-1) Step 1
    $DestinationPath = $DestinationPath & $Array[$i]
    $DestinationPath = $DestinationPath & "\"   
Next


;On cree un tableau avec tous les fichiers contenus dans le dossier source :
$SourcePath = $SourcePath & "\"
$Index = _RecFileListToArray ($SourcePath, "*", 1)

;On deplace ces fichiers/dossiers au niveau superieur : 
If $Index <> "" Then
    for $i = 1 To $Index[0]
    FileMove($SourcePath & $Index[$i],$DestinationPath & $Index[$i], $overwrite)
    Next
Endif


;Idem pour les dossiers : 
$Index = _RecFileListToArray ($SourcePath, "*", 2)

If $Index <> "" Then
    for $i = 1 To $Index[0]
    DirMove($SourcePath & $Index[$i],$DestinationPath & $Index[$i], $overwrite)
    Next
Endif

EndFunc
 

Voilà, c'est tout. Pour la petite histoire, j'ai aussi modifié un peu les menus contextuels sur mon ordi pour que ces applications soient accessibles directement avec le clic droit ;)

En espérant que ça servent à certains,
++

Re: [Ex] Quelques applications

Posté : dim. 05 févr. 2012 23:48
par TT22
Salut, moi j'aime beaucoup le copier coller sous DOS. Mais tu devrais utiliser le contenu du presse papier plutôt qu'une InputBox :wink:

Re: [Ex] Quelques applications

Posté : lun. 06 févr. 2012 12:08
par TommyDDR
Invite de commande :

- Clic droit / sélectionné
- Clic gauche glissé pour selectionner le code
- Clic droit sur la sélection (elle se retrouve ensuite dans le presse papier)

Re: [Ex] Quelques applications

Posté : lun. 06 févr. 2012 12:27
par TT22
@TommyDDR : En fait, son script ne sert pas à copier mais à coller dans DOS :P

Re: [Ex] Quelques applications

Posté : lun. 06 févr. 2012 19:53
par TommyDDR
Clic droit coller ...
Coder c'est bien mais il y a les limites à la fainéantise ^^

Re: [Ex] Quelques applications

Posté : lun. 06 févr. 2012 20:10
par TT22
Effectivement, dans ce cas la le script n'a plus trop d'utilité :wink:

Re: [Ex] Quelques applications

Posté : lun. 06 févr. 2012 21:02
par ThomasM
Au temps pour moi, je savais pas ;)

Re: [Ex] Quelques applications

Posté : mer. 15 févr. 2012 06:11
par DimVar
Ou encore, click droit sur la barre de menu cmd, Propriétés / Onglet Options / Cocher mode edition rapide.
Permet de coller avec click droit et le selectionner est toujours activé ;)

Cdlt.

Re: [Ex] Quelques applications

Posté : mer. 15 févr. 2012 08:00
par TT22
Ce qu'il faut, c'est faire un script qui colle lorsqu'on fait un Ctrl+V :wink:
Parceque ça, ça ne fonctionne pas dans DOS.

Re: [Ex] Quelques applications

Posté : mer. 15 févr. 2012 10:52
par TommyDDR
Dans ce cas, est ce que quelqu’un pourrait me faire un script qui me torche quand j'en ai fini avec les toilettes ?

Re: [Ex] Quelques applications

Posté : mer. 15 févr. 2012 11:13
par TT22
Sinon, suffit d'utiliser PowerShell, un simple clique droit copie ce qui est dans le presse-papier :wink: