Variable d'environnement [batch] Copier et dater du clic droit

Variable d'environnement [batch] Copier et dater du clic droit - Shell/Batch - Programmation

Marsh Posté le 12-06-2007 à 12:04:17    

Bonjour j'explique le titre, appel d un batch via une clee de registre au menu contextuelle, pour copier un fichier
 selectionné** en le renommant autommatiquement
de type
 
xcopy *.txt "%date:~8,2%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%.txt"
 
mais voila je ne sais pas (si possible) d'indiquer dans le batch qu'il s' agit de la selection** seulement.
car xcopy *.txt copie tout les txt du repertoire....
Je suis simple utilisateur, mais je me doute qu'un autre language conviendrait mieux..... connais pas...
 
Deuxieme question  xcopy demande la specification : ( F=fichier, R=repertoire) mais je n'arrive pas a mettre une reponse dans batch??? on peut?
 
Merci.


Message édité par rehties le 13-06-2007 à 10:39:42
Reply

Marsh Posté le 12-06-2007 à 12:04:17   

Reply

Marsh Posté le 12-06-2007 à 13:20:20    

RE alors voila:

Code :
  1. Windows Registry Editor Version 5.00
  2. [HKEY_CLASSES_ROOT\txtfile\shell\Copie et date du jour\command]
  3. @="c:\\copyTEXTE.bat"


 
 
et puis a la racine de disk c:  copytexte.bat

Code :
  1. echo off
  2. xcopy *.txt "%date:~8,2%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%.txt"
  3. fin


Ensuite le clic droit sur ce type de fichier, option de copie disponible.

Reply

Marsh Posté le 12-06-2007 à 14:29:48    


Code :
  1. echo off
  2. md "%date:~8,2%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%"
  3. echo [.ShellClassInfo]  >>%date:~8,2%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%\Desktop.ini
  4. echo IconFile=%SystemRoot%\Resources\Icones\glass\GlassPhotoshop.ico >>%date:~8,2%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%\Desktop.ini
  5. echo IconIndex=0 >>%date:~8,2%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%\Desktop.ini
  6. attrib +S %date:~8,2%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%
  7. attrib +H %date:~8,2%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%\Desktop.ini
  8. fin


Ce batch pour creer un repertoire dans celui ci le fichier desktop.ini pour l'icone du repertoire, Merci


Message édité par rehties le 12-06-2007 à 16:14:26
Reply

Marsh Posté le 13-06-2007 à 10:41:24    


En faite, il faudrait une variable d'environnement qui pointe vers la selection ???
 
 
ca existe ?

Reply

Marsh Posté le 13-06-2007 à 15:36:03    


une variable semblable à  %cd% qui représente le chemin du dossier courant dans lequel on est.
 
Sauf qui me faut le nom du fichier courant ....    :heink:  ca existe pas ???  merci, une petite reponse SVP :bounce:

Reply

Marsh Posté le 13-06-2007 à 19:05:33    

Pour le non du fichier courant tu fait ceci:

Code :
  1. %~dpnx0


 
d représent la lettre du lecteur
p représente le chemin du fichier
n représente le nom du fichier
x représent l'extension du fichier


Message édité par webding le 13-06-2007 à 19:07:03
Reply

Marsh Posté le 14-06-2007 à 10:13:54    

Merci pour ta reponse  :)  
 
merci pour  "%~dpnx0"  par contre je me suis  peut etre mal exprimé, car %~dpnx0 donne le nom courant du "script" :non:  
 
Je cherche une variable pour utiliser le nom courant de la cible  :pt1cable: (comme  %cd%  pour le chemin %~cdnx0 fonctionne pas)

Reply

Marsh Posté le 15-06-2007 à 08:58:52    

rehties a écrit :

Merci pour ta reponse  :)  
 
merci pour  "%~dpnx0"  par contre je me suis  peut etre mal exprimé, car %~dpnx0 donne le nom courant du "script" :non:  
 
Je cherche une variable pour utiliser le nom courant de la cible  :pt1cable: (comme  %cd%  pour le chemin %~cdnx0 fonctionne pas)


Reply

Marsh Posté le 15-06-2007 à 08:59:48    

Tu veut le chemin du répertoire courant ?

Reply

Marsh Posté le 15-06-2007 à 11:09:50    


Voila,
 
- exemple  -  mon batch (copytexte.bat) ce trouve a  %systemroot%,
                 -  la cible   yy.txt dans c:\documents\yy.txt  
                 -  click droit  sur le fichier cible (*txt) pour appeller le fichier.bat via le registre
 
- resultats -
%~dpnx0 dans le batch (specifie le fichier courant du script )
        - dans l'exemple donne %systemtoot%\copytexte.bat  :pfff:  
 
 
%CD% dans le batch (specifie le lecteur et le dossier en cours *)
        - dans l 'exemple %cd% donne C:\documents  :)  
 
- la cible -
%??  je cherche une commande pour donner c:\documents\yy.txt  :??:  
 
peut etre qu'il existe une commande complémentaire à %cd /??, peut etre une commande pour lire le fichier et recuperer le nom,  

Reply

Marsh Posté le 15-06-2007 à 11:09:50   

Reply

Marsh Posté le 15-06-2007 à 11:58:33    

Donc pour récupérer le chemin du fichier.txt sur le quel tu fait un clique droit c'est: %1

Code :
  1. %1


Message édité par webding le 15-06-2007 à 11:58:51
Reply

Marsh Posté le 15-06-2007 à 13:45:51    

le probleme, je ne sais pas dans ce cas comment l'ecrire
 
xcopy %1 "%date:~8,2%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%.txt"
 - fichier introuvable
 
xcopy %1
 nbre de parametre non valide

 
xcopy %1.txt
 fichier intriuvable
 
xcopy cd\%1  
 chemin d acces non valide
 
xcopy cd %1  
 fichier introuvable
 
xcopy %cd\%1  
  introuvable
 
xcopy %cd%\%1  
 introuvable

Reply

Marsh Posté le 15-06-2007 à 13:50:19    

Essaye de mettre echo %1 dans ton batch pour voir si ca affiche bien le nom du fichier.
 
Si non dans ta clé rajoute %1:

Code :
  1. [HKEY_CLASSES_ROOT\txtfile\shell\Copie et date du jour\command]
  2. @="c:\\copyTEXTE.bat %1"

Reply

Marsh Posté le 15-06-2007 à 13:53:42    

La méthode plus simple c'est encore d'utiliser un vrai OS genre Linux pour faire ça :p


---------------
LeRobot : un bot discord qui permet faire des stats sur vos temps de jeux
Reply

Marsh Posté le 15-06-2007 à 14:54:19    


 :fou: idem en resutat :   "c:\\copyTEXTE.bat %1"
 

Reply

Marsh Posté le 15-06-2007 à 14:55:30    

ca devrai fonctionner

Reply

Marsh Posté le 15-06-2007 à 15:02:43    

Merci,
 
Je cherche toujours......
En faite prend en copy tous les .txt du repertoire ......  peut etre VBs  ?? :bounce:

Reply

Marsh Posté le 16-09-2007 à 23:22:11    

rehties a écrit :

Merci,
 
Je cherche toujours......
En faite prend en copy tous les .txt du repertoire ......  peut etre VBs  ?? :bounce:


----------------------------------------
>>> VOILA LA SOLUTION
(quel que soit le type du fichier)
et merci pour l'idée, ça va bien me servir
----------------------------------------
1) REGISTRE : c:\CopyTEXTE.bat %1
2) BATCH c:\CopyTEXTE.bat (les rem sont pour le debug)
rem echo %~dpnx1
rem pause
rem copy %~dpnx1 %~dpn1ZZZ%~x1
copy %~dpnx1 %~dpn1%date:~8,2%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%%~x1
pause
RESULTAT:  
- fichier "zzz.txt" copié en "zzz-07-09-16_23-09.txt"
- seul le fichier sélectionné est copié

Reply

Marsh Posté le 16-09-2007 à 23:36:40    

rodolphe28 a écrit :


----------------------------------------
>>> VOILA LA SOLUTION
(quel que soit le type du fichier)
et merci pour l'idée, ça va bien me servir
----------------------------------------
1) REGISTRE : c:\CopyTEXTE.bat %1
2) BATCH c:\CopyTEXTE.bat (les rem sont pour le debug)
rem echo %~dpnx1
rem pause
rem copy %~dpnx1 %~dpn1ZZZ%~x1
copy %~dpnx1 %~dpn1%date:~8,2%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%%~x1
pause
RESULTAT:  
- fichier "zzz.txt" copié en "zzz-07-09-16_23-09.txt"
- seul le fichier sélectionné est copié


 
###  complément ###
pour permettre d'appliquer cette commande à tout type de fichier,  
la clé BDR est celle-ci :  
(adapter le nom du batch)
------------------------------------------
Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\*\shell\Copie_Historisée]
 
[HKEY_CLASSES_ROOT\*\shell\Copie_Historisée\Command]
@="c:\\CopyHistorisee.bat %1"
------------------------------------

Reply

Marsh Posté le 22-09-2007 à 11:28:10    

:jap: excellent , merci  :jap:  
 
si le fichier ce trouve dans un repertoire comprenant dans le nom un espace cela fonctionne plus .. :??:

Reply

Marsh Posté le 05-10-2007 à 10:55:30    

Y a t-il une solution ?
 
Pour le chemin du fichier les espaces sont pas pris en compte
 
%~dpnx1     donne c:\documents au lieu de c:\documents and settings
 
 :??:

Reply

Marsh Posté le 05-10-2007 à 17:27:35    

il faut mettre des guillemets :
"%~dpnx1"

Reply

Marsh Posté le 05-10-2007 à 17:47:15    

:non:  = "c:\documents"

Reply

Marsh Posté le 05-10-2007 à 18:02:13    

.bat :
copy "%~dpnx1" "%~dpn1%date:~8,2%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%%~x"
 
.reg :
@="c:\\CopyHistorisee.bat \"%1\""

Reply

Marsh Posté le 05-10-2007 à 18:19:18    

:)   :jap:  
au top merci a vous, j' étais en train de chercher pour les ""  , mais je ne comprend pas au .reg ce que represente \"" .. si vous voulez bien m 'expliquer?  
 
 
 
 
encore merci  
 
sinon avec quelle commande (if?) rajouter une condition qui serait:
 
si "le nom commence (par 2chiffre)-(2chiffre)-(2chiffre)"
 
alors
renommer les 8 "caractere" par la nouvelle date ????


Message édité par rehties le 05-10-2007 à 19:02:38
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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