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
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)
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)
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,
++