à tous !
Je galère pour créer un batch qui devra :
1) rechercher un fichier précis dans tous les sous-répertoires d'un dossier existant
2) créer un raccourci vers ce fichier dans un autre dossier existant
Sur l'étape de recherche
On connaît bien le nom du fichier recherché, ici nommé "applicationportable.exe", mais on ne connaît pas le nom du dossier où il se trouve. Le processus de recherche ne sera pas très long, car on connaît le nom du dossier parent.
En plus, le batch se trouvera sur le dossier racine du même lecteur, ce qui facilite la portabilité du batch.
Sur l'étape de création de raccourci
Je ne trouve pas comment programmer la création d'un raccourci (en cmd.bat, pas en script.vbs), pourtant, apparemment ça existe.
Pour programmer son déplacement j'imagine qu'il faudra utiliser xcopy, mais sa syntaxe dépendra des étapes précédentes, selon si on doit utiliser telle ou telle variable.
Voilà donc mes balbutiements en batch :
; ---------------------------------------------------------
for /r ".\PortableApps\Sous-dossier de nom inconnu" in (applicationportable.exe)
REM ici le dossier où le fichier a été trouvé = %p%
if exist do set %p%:\" set Vr=%p%
Créer Raccourci vers ".\PortableApps\%p%\"applicationportable.exe"
xcopy .\PortableApps\Sous-dossier de nom inconnu"\%p%\"applicationportable.lnk C:\Documents~1\%username%\Bureau\Menu~1\Programmes\D,marrage
del .\PortableApps\Sous-dossier de nom inconnu"\%p%\"applicationportable.lnk
echo merci d'avoir lu ça, cher internaute
;-------------------------------------------
Quelqu'un saurait-il comment faire ?
Peut-être existe-t-il un batch tout prêt pour ça, vu que ça serait très pratique dans de nombreuses situations...
Si vous aviez des remarques, ça aiderait sûrement...
______________________
REPONSE A VOS REPONSES
______________________
Merci I'm_HERE et Acris !
Je suis un peu perplexe...
Je n'arrive pas à utiliser le code de I'm_HERE...
Et la solution d'Acris semble judicieuse, mais elle dépend d'un programme externe, pas du pur batch. Le fait d'avoir à ajouter un dossier avec nircmd peut compliquer, voire invalider les opérations (bloqué par secpol.msc chez certains utilisateurs, au bureau), mais c'est déjà ça !
J'utilisais déjà NirCmd pour des choses très simples. Merci beaucoup de m'avoir fait penser à lui ! Quand même, sur gougueule, si on tape NirCmd, on tombe sur des dizaines de messages concernant les virus troyens qui l'exploitent. Ça pourrait faire peur aux utilisateurs de mon batch...
Si je ne trouve pas mieux, alors je m'y mettrais avec nircmd. Mais il faudra au moins qu'il existe un tuto en français ou une traduction des commandes et paramètres de NirCmd, et c'est pas gagné d'avance.
Voilà ou j'en suis maintenant. Quelqu'un trouvera-t-il où est mon erreur ?
@echo "Sachant que applicationportable.exe est quelque part dans un sous-dossier de .\PortableApps\"
@echo "Lancer la recherche puis en afficher le résultat en surbrillance via explorer.exe"
Set "applicationportable.exe=conf.tmp"
set "Chemin=.\PortableApps"
pushd "%.\PortableApps%"
for /f "tokens=*" %%i In ('dir/b/a-d/s "%applicationportable.exe%"2^>nul') do set "Ch=%%i"
popd
if defined Ch (explorer.exe /e,/select,"%Ch%")
@echo "J'ai surement mal inscrit mes parametres, pourtant je teste bien differentes combinaisons..."
@echo "SECOND VOLET : CREATION D'UN RACCOURCI"
@echo "Creer un raccourci VERS LE FICHIER TROUVÉ JUSTE AVANT dans un dossier precis"
@echo "Cher Acris, faut-il avoir mis nircmd.exe dans le dossier du batch ?"
@echo "Si oui, me faudra-t-il apprendre a configurer nircmd.exe auparavant ?"
nircmd shortcut "%.\PortableApps%\%%i" "~$folder.desktop$" "%%~ni"
@echo "Voici d'autres variables que j'aimerais utiliser au besoin"
@echo "nircmd shortcut "%.\PortableApps%\%%i" "~$%username%$" "%%~ni"
@echo "folder.start_menu Cible le Menu Demarrer de l'utilisateur"
@echo "folder.programs Cible la Liste des Programmes du Menu Demarrer de l'utilisateur"
@echo "folder.startup Cible le Dossier Demarrage de l'utilisateur (=lancer a chaque ouverture de session windows)"
@echo "pour trouver d'autres variables nircmd : http://www.nirsoft.net/utils/nircmd2.html#using"
pause
Partager