Capitaliser la sélection (environnement Windows)

Capitaliser la sélection (environnement Windows) - Shell/Batch - Programmation

Marsh Posté le 23-08-2007 à 03:37:39    

(Question de débutant qui vous prie d'avance d'excuser sa saugrenuité.)
 
Je me trouve dans l'interface-utilisateur de Windows XP (plus exactement: dans l'explorateur). Je procède manuellement au renommage de certains fichiers selon une logique qui ne peut pas être complètement automatisée. Concrètement, je navigue dans une liste fenêtrée de fichiers, m'arrête sur certains et resaisis les noms défectueux. Lorsque je suis en mode "resaisie" (F2), j'ai besoin ponctuellement de passer en majuscules une partie du nom (que je suis bien sûr susceptible de sélectionner). C'est une opération stupide et fastidieuse. J'aimerais pouvoir associer un raccourci au changement de casse. Le problème, c'est que je ne sais pas, dans le contexte que je viens de décrire, comment récupérer et manipuler la chaine sélectionnée.
 
J'ai trouvé ici et là des batch qui devraient me permettre d'opérer le changement de casse sur une variable quelconque, mais je ne vois pas comment aborder le problème en amont et en aval:
- en amont, comment transmettre la sélection à un script
- en aval, comment injecter le résultat du script dans la sélection
 
En gros, l'idée serait d'obtenir l'équivalent du Maj F3 de Word, mais au sein de l'explorateur. Je ne sache pas qu'il existe a priori un raccourci assurant cette opération sous Windows XP, et je voudrais éviter d'utiliser un logiciel d'automatisation pour une tâche aussi élémentaire.
 
En espérant n'avoir pas posté ceci au mauvais endroit, merci d'avance pour tout éclairage.

Reply

Marsh Posté le 23-08-2007 à 03:37:39   

Reply

Marsh Posté le 23-08-2007 à 05:09:26    

Tu peux pas recuperer ta selection en batch, sauf peut etre en utilisant un autre programme.
Ce qu'on peut faire c'est un script qui te demande un mot et qui te le ressort en majuscule.

Reply

Marsh Posté le 24-08-2007 à 11:52:56    

blastkiller a écrit :

Tu peux pas recuperer ta selection en batch, sauf peut etre en utilisant un autre programme.
Ce qu'on peut faire c'est un script qui te demande un mot et qui te le ressort en majuscule.


 
Triste nouvelle, mais merci quand même.
J'imagine que ça ne changerait au problème si on essayait de passer par le presse-papier (?)

Reply

Marsh Posté le 24-08-2007 à 13:09:29    

tu devrais passer par un outil de renommage automatique de fichiers je pense.  
 
Sinon tu peux t'en faire un si ton pb est très spécifique en Dephi, VB, C#... ou alors avec AutoIt (très pratique pour enregistrer des macros).


Message édité par rufo le 24-08-2007 à 13:09:44
Reply

Marsh Posté le 24-08-2007 à 13:39:16    

VBS ou AutoIt suffisent.
Pas la peine de se lancer dans un langage complexe pour ça.

Reply

Marsh Posté le 24-08-2007 à 14:42:19    

http://www.nirsoft.net/utils/nircmd.zip
hop tu telecharges ça, tu met nircmdc.exe dans c:\windows\system32\
tu le renommes en nircmd.exe
 
tu selectionne le truc que tu veux mettre en maj, tu fais un ptit CTRL C pour le mettre dans le presse papier, ensuite tu configure un raccourci pour executer le script suivant, et il te reste pluqu'a faire CTRL V pour coller le resultat en maj ;)
 
@echo off
setlocal enabledelayedexpansion
nircmd.exe clipboard addfile "c:\cb.txt"
for /f "delims=" %%a in (c:\cb.txt) do set var=%%a
set "ac="
set acc=0
:boucle
set /a acc+=1
set ins=!var:~-%acc%!
if %var%==%ins% goto end
goto boucle
 
:end
set /a acc-=1
for /l %%a in (0,1,%acc%) do call :cmd %%a
echo %ac%> c:\cbs.txt
nircmd.exe clipboard readfile "c:\cbs.txt"
del c:\cb.txt
del c:\cbs.txt
endlocal
exit
 
:cmd
set inc=%1
set ins=!var:~%inc%,1!
set inj=%ins%
if %ins%==a set inj=A
if %ins%==b set inj=B
if %ins%==c set inj=C
if %ins%==d set inj=D
if %ins%==e set inj=E
if %ins%==f set inj=F
if %ins%==g set inj=G
if %ins%==h set inj=H
if %ins%==i set inj=I
if %ins%==j set inj=J
if %ins%==k set inj=K
if %ins%==l set inj=L
if %ins%==m set inj=M
if %ins%==n set inj=N
if %ins%==o set inj=O
if %ins%==p set inj=P
if %ins%==q set inj=Q
if %ins%==r set inj=R
if %ins%==s set inj=S
if %ins%==t set inj=T
if %ins%==u set inj=U
if %ins%==v set inj=V
if %ins%==w set inj=W
if %ins%==x set inj=X
if %ins%==y set inj=Y
if %ins%==z set inj=Z
set ac=%ac%%inj%

Reply

Marsh Posté le 24-08-2007 à 23:12:21    

blastkiller a écrit :

http://www.nirsoft.net/utils/nircmd.zip
hop tu telecharges ça, tu met nircmdc.exe dans c:\windows\system32\
tu le renommes en nircmd.exe(...)


 
Un grand merci pour toutes ces infos, je vais potasser tout ça.
Apparemment il y aurait une autre façon de batcher la mise en majuscules.
Je cite Tom Lavedas (sur alt.msdos.batch):
 
I developed a little two line capitalization routine based on (...) the fact that a leading slash in a FOR statement will result in the capitalization of the characters following the slash:
 
:: Ucase.bat - A Win 95/98 routine to capitalize strings.  
::             (Special thanks to J. Savage & L. Fairhead)  
:: Tom Lavedas <lave...@pressroom.com  
::             http://www.pressroom.co>  
@echo %dbgu% off  
for %%v in (/%1) do set Ucase=%%v  
for %%"/" in ("set Ucase=" ) do %%%Ucase%  
echo.For example: %1 becomes %Ucase%
 
 
Je ne sais pas ce que ça vaut...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed