Aide pour Copier un fichier selectionné dans un répertoire
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
Aide pour Copier un fichier selectionné dans un répertoire
slt a tous,
Debutant dans le merveilleux monde d'autoit,j aurais besoin d'une petite aide concernant un script autoit
je cherche a sélectionner un fichier puis avec un raccourci clavier(quelconque)le déplacer dans un répertoire fixe.
si quelqu'un peut me venir en aide ,je pense que le script ne doit pas être trop compliqué.
merci de votre aide
Debutant dans le merveilleux monde d'autoit,j aurais besoin d'une petite aide concernant un script autoit
je cherche a sélectionner un fichier puis avec un raccourci clavier(quelconque)le déplacer dans un répertoire fixe.
si quelqu'un peut me venir en aide ,je pense que le script ne doit pas être trop compliqué.
merci de votre aide
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: Aide pour Copier un fichier selectionné dans un répertoire
Bonjour,
Regardez les exemples dans l'aide (F1)
RMQ: ici on déplace ! on ne copie pas !
Pour sélectionner le fichier
Pour sélectionner le dossier de destination
Mais si vous voulez vraiment copier il y a
et pour le raccourci clavier, sincèrement, je n'en vois pas l’intérêt !
FileMove ( "source", "dest" [, flag = 0] )
Regardez les exemples dans l'aide (F1)
RMQ: ici on déplace ! on ne copie pas !
Pour sélectionner le fichier
FileOpenDialog()
Pour sélectionner le dossier de destination
FileSelectFolder()
Mais si vous voulez vraiment copier il y a
FileCopy ( "source", "dest" [, flag = 0] )
et pour le raccourci clavier, sincèrement, je n'en vois pas l’intérêt !
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: Aide pour Copier un fichier selectionné dans un répertoire
merci pour ta réponse,en revanche il me faudrait simplement convertir cette ligne d un script bat en script autoit,car elle fonctionne en batch mais pas réussi en autoit-mon but n est pas d ouvrir une boite de dialogue(fileopendiag)mais directement selectionner un fichier a la souris puis en executant le scrit ,le fichier se deplacer dans le dossier prealablement designé dans le script- simple.... sauf pour moi
move %1 c:\test (le %1 est utilisé pour déplacer le fichier sélectionné a la souris)
merci a celui qui pourra m aider
move %1 c:\test (le %1 est utilisé pour déplacer le fichier sélectionné a la souris)
merci a celui qui pourra m aider
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: Aide pour Copier un fichier selectionné dans un répertoire
Soyez un peu plus précis si vous souhaitez une réponse !
Je ne connais pas grand chose en batch mais Tlem (le boss du forum) intervient sur d'autres forums dont ce type de problème.
Avec un code correcte et entier publié dans votre commentaire, vous aurez une réponse de Tlem ou d'autres !!!!
Sinon, en autoit (pur), il y a des solutions sympas et efficaces
Je doute que le code soit entier !!!move %1 c:\test
Je ne connais pas grand chose en batch mais Tlem (le boss du forum) intervient sur d'autres forums dont ce type de problème.
Avec un code correcte et entier publié dans votre commentaire, vous aurez une réponse de Tlem ou d'autres !!!!
Sinon, en autoit (pur), il y a des solutions sympas et efficaces
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: Aide pour Copier un fichier selectionné dans un répertoire
Bonsoir.
En script AutoIt, il suffit de gérer l'argument du Drag And Drop.
Ce sera moins épuré qu'avec le batch mais c'est pas beaucoup plus compliqué.
Des exemples de scripts utilisant un argument existent déjà sur le forum. Il suffit de s'en inspirer. Cherchez sur le forum ou dans l'aide $cmdline[].
Inconvénients : Il faudra que le script soit compilé pour fonctionner de manière simple.
Envoyé de mon appareil mobile en utilisant Tapatalk
En script AutoIt, il suffit de gérer l'argument du Drag And Drop.
Ce sera moins épuré qu'avec le batch mais c'est pas beaucoup plus compliqué.
Des exemples de scripts utilisant un argument existent déjà sur le forum. Il suffit de s'en inspirer. Cherchez sur le forum ou dans l'aide $cmdline[].
Inconvénients : Il faudra que le script soit compilé pour fonctionner de manière simple.
Envoyé de mon appareil mobile en utilisant Tapatalk
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: Aide pour Copier un fichier selectionné dans un répertoire
??
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: Aide pour Copier un fichier selectionné dans un répertoire
merci mikell
on s'approche de ce que je recherche,sauf que ce script creé un fichier test quelque soit le nom du fichier selectionné par ctrl x
mon but serait de deplacer le fichier selectionné par la souris dans un répertoire "test".(ce qui reviendrait a faire un ctrl c,ctrl v dans un repertoire donné mais par un raccourci clavier)
je continue a chercher,si tu as une petite idéé pour mon script je suis preneur
merci
on s'approche de ce que je recherche,sauf que ce script creé un fichier test quelque soit le nom du fichier selectionné par ctrl x
mon but serait de deplacer le fichier selectionné par la souris dans un répertoire "test".(ce qui reviendrait a faire un ctrl c,ctrl v dans un repertoire donné mais par un raccourci clavier)
je continue a chercher,si tu as une petite idéé pour mon script je suis preneur
merci
Re: Aide pour Copier un fichier selectionné dans un répertoire
ça fonctionne.... en revanche je ne peut déplacer qu'un seul fichier a la fois,avez vous une idée pour faire une sélection multiple pour pouvoir déplacer un ensemble de fichiers dans un répertoire?
merci
merci
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: Aide pour Copier un fichier selectionné dans un répertoire
Bonsoir,
J'ai retrouvé mon code et l'ai mis à jour. Il fonctionne sous Win 7 (et supérieur, je pense) et doit être compilé pour fonctionner
Double-cliquez sur MOVE-3-0.exe et une fenêtre s'ouvre. 3 choix:
- raccourci sur le bureau (on glisse les fichiers sur le raccourci)
- raccourci sur Envoyer vers (sélection des fichiers et clic droit sur Envoyer vers puis MOVE)
- raccourci clic droit (sélection des fichiers et clic droit sur MOVE) (Create an entry in the shell contextmenu)
On peut aussi glisser les fichiers sur le Exe
Le programme déplace tous les fichiers sélectionnés dans le dossier cible à l'exception des raccourcis en une manipe.
Le chemin du dossier destination est à mettre à jour. Par contre, le nom de l'exécutable ne doit pas être changé !!! et un icon pour l'exécutable est fortement conseillé (lors de la compilation)
On peut aussi défaire tous les raccourcis.
Ce code reprend l'idée de Tlem et a été inspiré par viewtopic.php?f=3&t=6533.
Il a l'avantage de ne fonctionner que quand on s'en sert.
Le code est long car il y a l'UDF de guinness pour _ShellAll
[edit] Si le déplacement échoue c'est, soit que le fichier est ouvert par un autre programme, soit le nom de ce fichier existe déjà dans le dossier destination
J'ai retrouvé mon code et l'ai mis à jour. Il fonctionne sous Win 7 (et supérieur, je pense) et doit être compilé pour fonctionner
Double-cliquez sur MOVE-3-0.exe et une fenêtre s'ouvre. 3 choix:
- raccourci sur le bureau (on glisse les fichiers sur le raccourci)
- raccourci sur Envoyer vers (sélection des fichiers et clic droit sur Envoyer vers puis MOVE)
- raccourci clic droit (sélection des fichiers et clic droit sur MOVE) (Create an entry in the shell contextmenu)
On peut aussi glisser les fichiers sur le Exe
Le programme déplace tous les fichiers sélectionnés dans le dossier cible à l'exception des raccourcis en une manipe.
Le chemin du dossier destination est à mettre à jour. Par contre, le nom de l'exécutable ne doit pas être changé !!! et un icon pour l'exécutable est fortement conseillé (lors de la compilation)
On peut aussi défaire tous les raccourcis.
Ce code reprend l'idée de Tlem et a été inspiré par viewtopic.php?f=3&t=6533.
Il a l'avantage de ne fonctionner que quand on s'en sert.
;https://autoitscript.fr/forum/viewtopic.php?f=3&t=6533
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\..\..\Program Files\AutoIt3\Examples\Helpfile\Extras\Arrow.ico
#AutoIt3Wrapper_Outfile=MOVE-3-0.exe ;ne pas modifier !!!
#AutoIt3Wrapper_Res_Comment=Déplace les fichiers
#AutoIt3Wrapper_Res_Description=Déplace les fichiers
#AutoIt3Wrapper_Res_Fileversion=0.0.3.1
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include<Array.au3>
Global $var, $resum, $id
If @Compiled = 0 Then Exit MsgBox(0,"Erreur","Programme non compilé")
If @OSBuild < 7601 Then Exit MsgBox(0,"Erreur","L'OS est trop ancien") ;Win 7 https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions
Global $pathDest = @HomeDrive & "\Archives" ;mettre à jour
If FileExists($pathDest) = 0 Then DirCreate($pathDest)
If $CmdLine[0] Then
For $i = 1 To $CmdLine[0]
ToolTip("Déplacement " & $CmdLine[$i],@DesktopWidth - 400,@DesktopHeight - 100,"MOVE",0,1)
$che = StringSplit($CmdLine[$i],"\")
$nom = $che[$che[0]]
If StringRight($nom,3) <> "lnk" Then ;ne prend pas les raccourcis
FileMove($CmdLine[$i],$pathDest,8)
EndIf
If FileExists($CmdLine[$i]) = 1 Then MsgBox(0,"ERREUR","Pas de déplacement " & $CmdLine[$i])
Next
Send("{F5}");actualiser
ToolTip("")
Else
Form()
EndIf
Func Form()
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Configuration", 255, 279, -1, -1)
Global $Checkbox1 = GUICtrlCreateCheckbox("Raccourci bureau", 10, 37, 233, 25)
Global $Checkbox2 = GUICtrlCreateCheckbox("Raccourci envoyer vers", 10, 67, 233, 25)
Global $Checkbox3 = GUICtrlCreateCheckbox("Raccourci clic droit (shell)", 10, 96, 233, 25)
Global $Label1 = GUICtrlCreateLabel("Installation", 8, 8, 236, 25, $SS_CENTER)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
Global $Label2 = GUICtrlCreateLabel("Désinstallation", 10, 129, 236, 25, $SS_CENTER)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
Global $Checkbox4 = GUICtrlCreateCheckbox("Supprime Raccourci bureau", 12, 158, 233, 25)
Global $Checkbox5 = GUICtrlCreateCheckbox("Supprime Raccourci envoyer vers", 12, 188, 233, 25)
Global $Checkbox6 = GUICtrlCreateCheckbox("Supprime Raccourci clic droit (shell)", 12, 217, 233, 25)
Global $Button1 = GUICtrlCreateButton("Validez les choix", 46, 248, 163, 25)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Checkbox1
_IsChecked($Checkbox1, $Checkbox4)
Case $Checkbox2
_IsChecked($Checkbox2, $Checkbox5)
Case $Checkbox3
_IsChecked($Checkbox3, $Checkbox6)
Case $Checkbox4
_IsChecked($Checkbox4, $Checkbox1)
Case $Checkbox5
_IsChecked($Checkbox5, $Checkbox2)
Case $Checkbox6
_IsChecked($Checkbox6, $Checkbox3)
Case $Button1
verif()
EndSwitch
WEnd
EndFunc ; Form()
Func _IsChecked($aControlID, $bControlID)
If BitAND(GUICtrlRead($aControlID), $GUI_CHECKED) = $GUI_CHECKED Then
GUICtrlSetState($bControlID,$GUI_UNCHECKED)
EndIf
EndFunc ;==>_IsChecked
Func verif()
Local $Checkbox
For $i = 1 to 10
$resum = $Checkbox & $i
If BitAND(GUICtrlRead($resum), $GUI_CHECKED) = $GUI_CHECKED Then
Switch $resum
Case $Checkbox1 ;bureau
If Not FileExists(@DesktopDir & "\MOVE.lnk") Then
FileCreateShortcut(@ScriptDir & "\MOVE-3-0.exe",@DesktopDir & "\MOVE.lnk", @ScriptDir & "\MOVE-3-0.exe")
$var = 1
Else
$var = 0
EndIf
$id = $i
validation()
Case $Checkbox2 ;sento
If Not FileExists(@AppDataDir & "\Microsoft\Windows\SendTo\MOVE.lnk") Then
FileCreateShortcut(@ScriptDir & "\MOVE-3-0.exe",@AppDataDir & "\Microsoft\Windows\SendTo\MOVE.lnk", @ScriptDir & "\MOVE-3-0.exe")
$var = 1
Else
$var = 0
EndIf
$id = $i
validation()
Case $Checkbox3 ;shell
_ShellAll_Install('MOVE','MOVE-3-0.exe',@ScriptDir & "\MOVE-3-0.exe", @ScriptDir & "\MOVE-3-0.exe")
$var = RegRead("HKEY_CLASSES_ROOT\*\shell\MOVE-3-0\command", "")
If $var > "" Then $var = 1
$id = $i
validation()
;>>>>>>>>> uninstall
Case $Checkbox4 ;bureau
If FileExists(@DesktopDir & "\MOVE.lnk") Then
FileDelete(@DesktopDir & "\MOVE.lnk")
$var = 1
Else
$var = 0
EndIf
$id = $i
validation()
Case $Checkbox5 ;sendto
If FileExists(@AppDataDir & "\Microsoft\Windows\SendTo\MOVE.lnk") Then
FileDelete(@AppDataDir & "\Microsoft\Windows\SendTo\MOVE.lnk")
$var = 1
Else
$var = 0
EndIf
$id = $i
validation()
Case $Checkbox6 ;shell
_ShellAll_Uninstall('MOVE-3-0.exe')
$var = RegRead("HKEY_CLASSES_ROOT\*\shell\MOVE-3-0\command", "")
If $var = "" Then $var = 1
$id = $i
validation()
EndSwitch
EndIf
Next
GUICtrlSetState($Checkbox1,$GUI_UNCHECKED)
GUICtrlSetState($Checkbox2,$GUI_UNCHECKED)
GUICtrlSetState($Checkbox3,$GUI_UNCHECKED)
GUICtrlSetState($Checkbox4,$GUI_UNCHECKED)
GUICtrlSetState($Checkbox5,$GUI_UNCHECKED)
GUICtrlSetState($Checkbox6,$GUI_UNCHECKED)
EndFunc
Func validation()
If $var = 1 Then
ToolTip("SUCCES " & ControlGetText("","",$id),150,150,"INFO",1)
Sleep(3000)
ToolTip("")
Else
ToolTip("ECHEC " & ControlGetText("","",$id),150,150,"INFO",2)
Sleep(3000)
ToolTip("")
EndIf
$var = 0
EndFunc
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; #INDEX# =======================================================================================================================
; Title .........: _ShellAll
; AutoIt Version : v3.2.12.1 or higher
; Language ......: English
; Description ...: Create an entry in the shell contextmenu when selecting a file and folder, includes the program icon as well.
; Note ..........:
; Author(s) .....: guinness
; Remarks .......: Special thanks to KaFu for EnumRegKeys2Array() which I used as inspiration for enumerating the Registry Keys.
; ===============================================================================================================================
; #INCLUDES# =========================================================================================================
; None
; #GLOBAL VARIABLES# =================================================================================================
; None
; #CURRENT# =====================================================================================================================
; _ShellAll_Install: Creates an entry in the 'All Users/Current Users' registry for displaying a program entry in the shell contextmenu, but only displays when selecting a file and folder.
; _ShellAll_Uninstall: Deletes an entry in the 'All Users/Current Users' registry for displaying a program entry in the shell contextmenu.
; ===============================================================================================================================
; #INTERNAL_USE_ONLY#============================================================================================================
; __ShellAll_RegistryGet ......; Retrieve an array of registry entries for a specific key.
; ===============================================================================================================================
; #FUNCTION# ====================================================================================================================
; Name ..........: _ShellAll_Install
; Description ...: Creates an entry in the 'All Users/Current Users' registry for displaying a program entry in the shell contextmenu, but only displays when selecting a file and folder.
; Syntax ........: _ShellAll_Install($sText[, $sName = @ScriptName[, $sFilePath = @ScriptFullPath[, $sIconPath = @ScriptFullPath[,
; $iIcon = 0[, $fAllUsers = False[, $fExtended = False]]]]]])
; Parameters ....: $sText - Text to be shown in the contextmenu.
; $sName - [optional] Name of the program. Default is @ScriptName.
; $sFilePath - [optional] Location of the program executable. Default is @ScriptFullPath.
; $sIconPath - [optional] Location of the icon e.g. program executable or dll file. Default is @ScriptFullPath.
; $iIcon - [optional] Index of icon to be used. Default is 0.
; $fAllUsers - [optional] Add to Current Users (False) or All Users (True) Default is False.
; $fExtended - [optional] Show in the Extended contextmenu using Shift + Right click. Default is False.
; Return values .: Success - RegWrite() Return code.
; Failure - none
; Author ........: guinness
; Example .......: Yes
; ===============================================================================================================================
Func _ShellAll_Install($sText, $sName = @ScriptName, $sFilePath = @ScriptFullPath, $sIconPath = @ScriptFullPath, $iIcon = 0, $fAllUsers = False, $fExtended = False)
Local $aArray[3] = [2, '*', 'Directory'], $i64Bit = ''
If $iIcon = Default Then
$iIcon = 0
EndIf
If $sFilePath = Default Then
$sFilePath = @ScriptFullPath
EndIf
If $sIconPath = Default Then
$sIconPath = @ScriptFullPath
EndIf
If $sName = Default Then
$sName = @ScriptName
EndIf
If @OSArch = 'X64' Then
$i64Bit = '64'
EndIf
For $i = 1 To $aArray[0]
If $fAllUsers Then
$aArray[$i] = 'HKEY_LOCAL_MACHINE' & $i64Bit & '\SOFTWARE\Classes\' & $aArray[$i] & '\shell\'
Else
$aArray[$i] = 'HKEY_CURRENT_USER' & $i64Bit & '\SOFTWARE\Classes\' & $aArray[$i] & '\shell\'
EndIf
Next
$sName = StringRegExpReplace($sName, '\.[^\.\\/]*$', '')
If StringStripWS($sName, 8) = '' Or FileExists($sFilePath) = 0 Then
Return SetError(1, 0, 0)
EndIf
_ShellAll_Uninstall($sName, $fAllUsers)
For $i = 1 To $aArray[0]
RegWrite($aArray[$i] & $sName, '', 'REG_SZ', $sText)
RegWrite($aArray[$i] & $sName, 'Icon', 'REG_EXPAND_SZ', $sIconPath & ',' & $iIcon)
RegWrite($aArray[$i] & $sName & '\command', '', 'REG_SZ', '"' & $sFilePath & '" "%1"')
If $fExtended Then
RegWrite($aArray[$i], 'Extended', 'REG_SZ', '')
EndIf
Next
Return SetError(@error, 0, @error)
EndFunc ;==>_ShellAll_Install
; #FUNCTION# ====================================================================================================================
; Name ..........: _ShellAll_Uninstall
; Description ...: Deletes an entry in the 'All Users/Current Users' registry for displaying a program entry in the shell contextmenu.
; Syntax ........: _ShellAll_Uninstall([$sName = @ScriptName[, $fAllUsers = False]])
; Parameters ....: $sName - [optional] Name of the Program. Default is @ScriptName.
; $fAllUsers - [optional] Was it added to Current Users (False) or All Users (True) Default is False.
; Return values .: Success - Returns 2D Array of registry entries.
; Failure - Returns 0 and sets @error to non-zero.
; Author ........: guinness
; Example .......: Yes
; ===============================================================================================================================
Func _ShellAll_Uninstall($sName = @ScriptName, $fAllUsers = False)
Local $aArray[3] = [2, '*', 'Directory'], $i64Bit = ''
If $sName = Default Then
$sName = @ScriptName
EndIf
If @OSArch = 'X64' Then
$i64Bit = '64'
EndIf
For $i = 1 To $aArray[0]
If $fAllUsers Then
$aArray[$i] = 'HKEY_LOCAL_MACHINE' & $i64Bit & '\SOFTWARE\Classes\' & $aArray[$i] & '\shell\'
Else
$aArray[$i] = 'HKEY_CURRENT_USER' & $i64Bit & '\SOFTWARE\Classes\' & $aArray[$i] & '\shell\'
EndIf
Next
$sName = StringRegExpReplace($sName, '\.[^\.\\/]*$', '')
If StringStripWS($sName, 8) = '' Then
Return SetError(1, 0, 0)
EndIf
Local $aFinal[1][5] = [[0, 5]], $aReturn = 0, $sDelete = ''
For $i = 1 To $aArray[0]
$aReturn = __ShellAll_RegistryGet($aArray[$i])
If $aReturn[0][0] > 0 Then
For $j = 1 To $aReturn[0][0]
If $aReturn[$j][0] = $sName And $sDelete <> $aReturn[$j][1] Then
$sDelete = $aReturn[$j][1]
RegDelete($sDelete)
EndIf
Next
ReDim $aFinal[$aFinal[0][0] + $aReturn[0][0] + 1][$aReturn[0][1]]
For $j = 1 To $aReturn[0][0]
$aFinal[0][0] += 1
For $k = 0 To $aReturn[0][1] - 1
$aFinal[$aFinal[0][0]][$k] = $aReturn[$j][$k]
Next
Next
$aFinal[0][1] = $aReturn[0][1]
EndIf
Next
Return $aFinal
EndFunc ;==>_ShellAll_Uninstall
; #INTERNAL_USE_ONLY#============================================================================================================
Func __ShellAll_RegistryGet($sRegistryKey)
Local $aArray[1][5] = [[0, 5]], $iCount_1 = 0, $iCount_2 = 0, $iDimension = 0, $iError = 0, $sRegistryKey_All = '', $sRegistryKey_Main = '', $sRegistryKey_Name = '', _
$sRegistryKey_Value = ''
While 1
If $iError Then
ExitLoop
EndIf
$sRegistryKey_Main = RegEnumKey($sRegistryKey, $iCount_1 + 1)
If @error Then
$sRegistryKey_All = $sRegistryKey
$iError = 1
Else
$sRegistryKey_All = $sRegistryKey & $sRegistryKey_Main
EndIf
$iCount_2 = 0
While 1
$sRegistryKey_Name = RegEnumVal($sRegistryKey_All, $iCount_2 + 1)
If @error Then
ExitLoop
EndIf
If ($aArray[0][0] + 1) >= $iDimension Then
$iDimension = ($aArray[0][0] + 1) * 2
ReDim $aArray[$iDimension][$aArray[0][1]]
EndIf
$sRegistryKey_Value = RegRead($sRegistryKey_All, $sRegistryKey_Name)
$aArray[$aArray[0][0] + 1][0] = $sRegistryKey_Main
$aArray[$aArray[0][0] + 1][1] = $sRegistryKey_All
$aArray[$aArray[0][0] + 1][2] = $sRegistryKey & $sRegistryKey_Main & '\' & $sRegistryKey_Name
$aArray[$aArray[0][0] + 1][3] = $sRegistryKey_Name
$aArray[$aArray[0][0] + 1][4] = $sRegistryKey_Value
$aArray[0][0] += 1
$iCount_2 += 1
WEnd
$iCount_1 += 1
WEnd
ReDim $aArray[$aArray[0][0] + 1][$aArray[0][1]]
Return $aArray
EndFunc ;==>__ShellAll_RegistryGet
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\..\..\Program Files\AutoIt3\Examples\Helpfile\Extras\Arrow.ico
#AutoIt3Wrapper_Outfile=MOVE-3-0.exe ;ne pas modifier !!!
#AutoIt3Wrapper_Res_Comment=Déplace les fichiers
#AutoIt3Wrapper_Res_Description=Déplace les fichiers
#AutoIt3Wrapper_Res_Fileversion=0.0.3.1
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include<Array.au3>
Global $var, $resum, $id
If @Compiled = 0 Then Exit MsgBox(0,"Erreur","Programme non compilé")
If @OSBuild < 7601 Then Exit MsgBox(0,"Erreur","L'OS est trop ancien") ;Win 7 https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions
Global $pathDest = @HomeDrive & "\Archives" ;mettre à jour
If FileExists($pathDest) = 0 Then DirCreate($pathDest)
If $CmdLine[0] Then
For $i = 1 To $CmdLine[0]
ToolTip("Déplacement " & $CmdLine[$i],@DesktopWidth - 400,@DesktopHeight - 100,"MOVE",0,1)
$che = StringSplit($CmdLine[$i],"\")
$nom = $che[$che[0]]
If StringRight($nom,3) <> "lnk" Then ;ne prend pas les raccourcis
FileMove($CmdLine[$i],$pathDest,8)
EndIf
If FileExists($CmdLine[$i]) = 1 Then MsgBox(0,"ERREUR","Pas de déplacement " & $CmdLine[$i])
Next
Send("{F5}");actualiser
ToolTip("")
Else
Form()
EndIf
Func Form()
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Configuration", 255, 279, -1, -1)
Global $Checkbox1 = GUICtrlCreateCheckbox("Raccourci bureau", 10, 37, 233, 25)
Global $Checkbox2 = GUICtrlCreateCheckbox("Raccourci envoyer vers", 10, 67, 233, 25)
Global $Checkbox3 = GUICtrlCreateCheckbox("Raccourci clic droit (shell)", 10, 96, 233, 25)
Global $Label1 = GUICtrlCreateLabel("Installation", 8, 8, 236, 25, $SS_CENTER)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
Global $Label2 = GUICtrlCreateLabel("Désinstallation", 10, 129, 236, 25, $SS_CENTER)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
Global $Checkbox4 = GUICtrlCreateCheckbox("Supprime Raccourci bureau", 12, 158, 233, 25)
Global $Checkbox5 = GUICtrlCreateCheckbox("Supprime Raccourci envoyer vers", 12, 188, 233, 25)
Global $Checkbox6 = GUICtrlCreateCheckbox("Supprime Raccourci clic droit (shell)", 12, 217, 233, 25)
Global $Button1 = GUICtrlCreateButton("Validez les choix", 46, 248, 163, 25)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Checkbox1
_IsChecked($Checkbox1, $Checkbox4)
Case $Checkbox2
_IsChecked($Checkbox2, $Checkbox5)
Case $Checkbox3
_IsChecked($Checkbox3, $Checkbox6)
Case $Checkbox4
_IsChecked($Checkbox4, $Checkbox1)
Case $Checkbox5
_IsChecked($Checkbox5, $Checkbox2)
Case $Checkbox6
_IsChecked($Checkbox6, $Checkbox3)
Case $Button1
verif()
EndSwitch
WEnd
EndFunc ; Form()
Func _IsChecked($aControlID, $bControlID)
If BitAND(GUICtrlRead($aControlID), $GUI_CHECKED) = $GUI_CHECKED Then
GUICtrlSetState($bControlID,$GUI_UNCHECKED)
EndIf
EndFunc ;==>_IsChecked
Func verif()
Local $Checkbox
For $i = 1 to 10
$resum = $Checkbox & $i
If BitAND(GUICtrlRead($resum), $GUI_CHECKED) = $GUI_CHECKED Then
Switch $resum
Case $Checkbox1 ;bureau
If Not FileExists(@DesktopDir & "\MOVE.lnk") Then
FileCreateShortcut(@ScriptDir & "\MOVE-3-0.exe",@DesktopDir & "\MOVE.lnk", @ScriptDir & "\MOVE-3-0.exe")
$var = 1
Else
$var = 0
EndIf
$id = $i
validation()
Case $Checkbox2 ;sento
If Not FileExists(@AppDataDir & "\Microsoft\Windows\SendTo\MOVE.lnk") Then
FileCreateShortcut(@ScriptDir & "\MOVE-3-0.exe",@AppDataDir & "\Microsoft\Windows\SendTo\MOVE.lnk", @ScriptDir & "\MOVE-3-0.exe")
$var = 1
Else
$var = 0
EndIf
$id = $i
validation()
Case $Checkbox3 ;shell
_ShellAll_Install('MOVE','MOVE-3-0.exe',@ScriptDir & "\MOVE-3-0.exe", @ScriptDir & "\MOVE-3-0.exe")
$var = RegRead("HKEY_CLASSES_ROOT\*\shell\MOVE-3-0\command", "")
If $var > "" Then $var = 1
$id = $i
validation()
;>>>>>>>>> uninstall
Case $Checkbox4 ;bureau
If FileExists(@DesktopDir & "\MOVE.lnk") Then
FileDelete(@DesktopDir & "\MOVE.lnk")
$var = 1
Else
$var = 0
EndIf
$id = $i
validation()
Case $Checkbox5 ;sendto
If FileExists(@AppDataDir & "\Microsoft\Windows\SendTo\MOVE.lnk") Then
FileDelete(@AppDataDir & "\Microsoft\Windows\SendTo\MOVE.lnk")
$var = 1
Else
$var = 0
EndIf
$id = $i
validation()
Case $Checkbox6 ;shell
_ShellAll_Uninstall('MOVE-3-0.exe')
$var = RegRead("HKEY_CLASSES_ROOT\*\shell\MOVE-3-0\command", "")
If $var = "" Then $var = 1
$id = $i
validation()
EndSwitch
EndIf
Next
GUICtrlSetState($Checkbox1,$GUI_UNCHECKED)
GUICtrlSetState($Checkbox2,$GUI_UNCHECKED)
GUICtrlSetState($Checkbox3,$GUI_UNCHECKED)
GUICtrlSetState($Checkbox4,$GUI_UNCHECKED)
GUICtrlSetState($Checkbox5,$GUI_UNCHECKED)
GUICtrlSetState($Checkbox6,$GUI_UNCHECKED)
EndFunc
Func validation()
If $var = 1 Then
ToolTip("SUCCES " & ControlGetText("","",$id),150,150,"INFO",1)
Sleep(3000)
ToolTip("")
Else
ToolTip("ECHEC " & ControlGetText("","",$id),150,150,"INFO",2)
Sleep(3000)
ToolTip("")
EndIf
$var = 0
EndFunc
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; #INDEX# =======================================================================================================================
; Title .........: _ShellAll
; AutoIt Version : v3.2.12.1 or higher
; Language ......: English
; Description ...: Create an entry in the shell contextmenu when selecting a file and folder, includes the program icon as well.
; Note ..........:
; Author(s) .....: guinness
; Remarks .......: Special thanks to KaFu for EnumRegKeys2Array() which I used as inspiration for enumerating the Registry Keys.
; ===============================================================================================================================
; #INCLUDES# =========================================================================================================
; None
; #GLOBAL VARIABLES# =================================================================================================
; None
; #CURRENT# =====================================================================================================================
; _ShellAll_Install: Creates an entry in the 'All Users/Current Users' registry for displaying a program entry in the shell contextmenu, but only displays when selecting a file and folder.
; _ShellAll_Uninstall: Deletes an entry in the 'All Users/Current Users' registry for displaying a program entry in the shell contextmenu.
; ===============================================================================================================================
; #INTERNAL_USE_ONLY#============================================================================================================
; __ShellAll_RegistryGet ......; Retrieve an array of registry entries for a specific key.
; ===============================================================================================================================
; #FUNCTION# ====================================================================================================================
; Name ..........: _ShellAll_Install
; Description ...: Creates an entry in the 'All Users/Current Users' registry for displaying a program entry in the shell contextmenu, but only displays when selecting a file and folder.
; Syntax ........: _ShellAll_Install($sText[, $sName = @ScriptName[, $sFilePath = @ScriptFullPath[, $sIconPath = @ScriptFullPath[,
; $iIcon = 0[, $fAllUsers = False[, $fExtended = False]]]]]])
; Parameters ....: $sText - Text to be shown in the contextmenu.
; $sName - [optional] Name of the program. Default is @ScriptName.
; $sFilePath - [optional] Location of the program executable. Default is @ScriptFullPath.
; $sIconPath - [optional] Location of the icon e.g. program executable or dll file. Default is @ScriptFullPath.
; $iIcon - [optional] Index of icon to be used. Default is 0.
; $fAllUsers - [optional] Add to Current Users (False) or All Users (True) Default is False.
; $fExtended - [optional] Show in the Extended contextmenu using Shift + Right click. Default is False.
; Return values .: Success - RegWrite() Return code.
; Failure - none
; Author ........: guinness
; Example .......: Yes
; ===============================================================================================================================
Func _ShellAll_Install($sText, $sName = @ScriptName, $sFilePath = @ScriptFullPath, $sIconPath = @ScriptFullPath, $iIcon = 0, $fAllUsers = False, $fExtended = False)
Local $aArray[3] = [2, '*', 'Directory'], $i64Bit = ''
If $iIcon = Default Then
$iIcon = 0
EndIf
If $sFilePath = Default Then
$sFilePath = @ScriptFullPath
EndIf
If $sIconPath = Default Then
$sIconPath = @ScriptFullPath
EndIf
If $sName = Default Then
$sName = @ScriptName
EndIf
If @OSArch = 'X64' Then
$i64Bit = '64'
EndIf
For $i = 1 To $aArray[0]
If $fAllUsers Then
$aArray[$i] = 'HKEY_LOCAL_MACHINE' & $i64Bit & '\SOFTWARE\Classes\' & $aArray[$i] & '\shell\'
Else
$aArray[$i] = 'HKEY_CURRENT_USER' & $i64Bit & '\SOFTWARE\Classes\' & $aArray[$i] & '\shell\'
EndIf
Next
$sName = StringRegExpReplace($sName, '\.[^\.\\/]*$', '')
If StringStripWS($sName, 8) = '' Or FileExists($sFilePath) = 0 Then
Return SetError(1, 0, 0)
EndIf
_ShellAll_Uninstall($sName, $fAllUsers)
For $i = 1 To $aArray[0]
RegWrite($aArray[$i] & $sName, '', 'REG_SZ', $sText)
RegWrite($aArray[$i] & $sName, 'Icon', 'REG_EXPAND_SZ', $sIconPath & ',' & $iIcon)
RegWrite($aArray[$i] & $sName & '\command', '', 'REG_SZ', '"' & $sFilePath & '" "%1"')
If $fExtended Then
RegWrite($aArray[$i], 'Extended', 'REG_SZ', '')
EndIf
Next
Return SetError(@error, 0, @error)
EndFunc ;==>_ShellAll_Install
; #FUNCTION# ====================================================================================================================
; Name ..........: _ShellAll_Uninstall
; Description ...: Deletes an entry in the 'All Users/Current Users' registry for displaying a program entry in the shell contextmenu.
; Syntax ........: _ShellAll_Uninstall([$sName = @ScriptName[, $fAllUsers = False]])
; Parameters ....: $sName - [optional] Name of the Program. Default is @ScriptName.
; $fAllUsers - [optional] Was it added to Current Users (False) or All Users (True) Default is False.
; Return values .: Success - Returns 2D Array of registry entries.
; Failure - Returns 0 and sets @error to non-zero.
; Author ........: guinness
; Example .......: Yes
; ===============================================================================================================================
Func _ShellAll_Uninstall($sName = @ScriptName, $fAllUsers = False)
Local $aArray[3] = [2, '*', 'Directory'], $i64Bit = ''
If $sName = Default Then
$sName = @ScriptName
EndIf
If @OSArch = 'X64' Then
$i64Bit = '64'
EndIf
For $i = 1 To $aArray[0]
If $fAllUsers Then
$aArray[$i] = 'HKEY_LOCAL_MACHINE' & $i64Bit & '\SOFTWARE\Classes\' & $aArray[$i] & '\shell\'
Else
$aArray[$i] = 'HKEY_CURRENT_USER' & $i64Bit & '\SOFTWARE\Classes\' & $aArray[$i] & '\shell\'
EndIf
Next
$sName = StringRegExpReplace($sName, '\.[^\.\\/]*$', '')
If StringStripWS($sName, 8) = '' Then
Return SetError(1, 0, 0)
EndIf
Local $aFinal[1][5] = [[0, 5]], $aReturn = 0, $sDelete = ''
For $i = 1 To $aArray[0]
$aReturn = __ShellAll_RegistryGet($aArray[$i])
If $aReturn[0][0] > 0 Then
For $j = 1 To $aReturn[0][0]
If $aReturn[$j][0] = $sName And $sDelete <> $aReturn[$j][1] Then
$sDelete = $aReturn[$j][1]
RegDelete($sDelete)
EndIf
Next
ReDim $aFinal[$aFinal[0][0] + $aReturn[0][0] + 1][$aReturn[0][1]]
For $j = 1 To $aReturn[0][0]
$aFinal[0][0] += 1
For $k = 0 To $aReturn[0][1] - 1
$aFinal[$aFinal[0][0]][$k] = $aReturn[$j][$k]
Next
Next
$aFinal[0][1] = $aReturn[0][1]
EndIf
Next
Return $aFinal
EndFunc ;==>_ShellAll_Uninstall
; #INTERNAL_USE_ONLY#============================================================================================================
Func __ShellAll_RegistryGet($sRegistryKey)
Local $aArray[1][5] = [[0, 5]], $iCount_1 = 0, $iCount_2 = 0, $iDimension = 0, $iError = 0, $sRegistryKey_All = '', $sRegistryKey_Main = '', $sRegistryKey_Name = '', _
$sRegistryKey_Value = ''
While 1
If $iError Then
ExitLoop
EndIf
$sRegistryKey_Main = RegEnumKey($sRegistryKey, $iCount_1 + 1)
If @error Then
$sRegistryKey_All = $sRegistryKey
$iError = 1
Else
$sRegistryKey_All = $sRegistryKey & $sRegistryKey_Main
EndIf
$iCount_2 = 0
While 1
$sRegistryKey_Name = RegEnumVal($sRegistryKey_All, $iCount_2 + 1)
If @error Then
ExitLoop
EndIf
If ($aArray[0][0] + 1) >= $iDimension Then
$iDimension = ($aArray[0][0] + 1) * 2
ReDim $aArray[$iDimension][$aArray[0][1]]
EndIf
$sRegistryKey_Value = RegRead($sRegistryKey_All, $sRegistryKey_Name)
$aArray[$aArray[0][0] + 1][0] = $sRegistryKey_Main
$aArray[$aArray[0][0] + 1][1] = $sRegistryKey_All
$aArray[$aArray[0][0] + 1][2] = $sRegistryKey & $sRegistryKey_Main & '\' & $sRegistryKey_Name
$aArray[$aArray[0][0] + 1][3] = $sRegistryKey_Name
$aArray[$aArray[0][0] + 1][4] = $sRegistryKey_Value
$aArray[0][0] += 1
$iCount_2 += 1
WEnd
$iCount_1 += 1
WEnd
ReDim $aArray[$aArray[0][0] + 1][$aArray[0][1]]
Return $aArray
EndFunc ;==>__ShellAll_RegistryGet
[edit] Si le déplacement échoue c'est, soit que le fichier est ouvert par un autre programme, soit le nom de ce fichier existe déjà dans le dossier destination
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)