Copie des fichiers sur ma clé usb après avoir inséré ma clé

Fermé
Andrew - 7 déc. 2022 à 02:47
brucine Messages postés 14235 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 19 avril 2024 - 7 déc. 2022 à 09:10

Bonjour,

Svp quand je fais un copie collé de ceci et que je mets par exemple : copie.bat et que j’exécute on me renvois un message src ? je clique sur c ensuite ext ? quand je mets .bat rien juste un message appuyer sur une touche pour continuer 

Ensuite je mets copiebat mais quand je mets la clé sur une machine aucune copie que faire svp 

echo off 
echo src ? 
set /p src= 
echo dest ? 
set /p dest= 
echo ext ? 
set /p ext= 
for /R %src% %%f in (*.%ext%) do copy "%%f" %dest% 
pause

iPhone / Chrome 106.0.5249.92

A voir également:

1 réponse

barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 906
7 déc. 2022 à 08:49

Bonjour,

Je pense que le problème vient de l'extension, tu ne dois pas mettre .bat tu dois mettre bat

Pour éviter ce genre de problème , il faut un petit peu filtrer/valider les saisies de l'utilisateur comme ceci :

@echo off
rem chcp 1252 >nul
setlocal disabledelayedexpansion

:saisieSource
cls
set "src="
echo Dossier source ?
set /p src=">>> "
if not defined src (goto :saisieSource)
if not exist "%src%" (goto :saisieSource)
set "src=%src:"=%"

:saisieDestination
set "dest="
echo. & echo Dossier de destination ?
set /p dest=">>> "
if not defined dest (goto :saisieDestination)
if not exist "%dest%" (goto :saisieDestination)
set "dest=%dest:"=%"

:saisieExtension
set "ext="
echo. & echo Extension ?
set /p ext=">>> "
if not defined ext (goto :saisieExtension)
set "ext=%ext:.=%"

for /R "%src%" %%A in (*.%ext%) do copy "%%~A" "%dest%"

pause
exit

Concernant la source, il ne faut pas taper C il faut taper C:

C'est une très mauvaise idée d'indiquer C: comme source car la recherche des fichiers sur le tout le disque C va prendre un temps fou, au mieux quelques minutes au pire quelques dizaines de minutes voire des heures suivant la taille du disque.



0
brucine Messages postés 14235 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 19 avril 2024 1 795
7 déc. 2022 à 09:10

Bonjour,

La syntaxe set "src=%src:"=%" ne sera pas indispensable si le chemin est parfaitement qualifié et ce qui est une mauvaise idée, ce n'est pas tant de chercher des batchs sur C:\ que ce qui amène à les y chercher: il n'y a aucune raison qu'ils se trouvent à la racine de C:\ et pas dans un dossier dédié par exemple C:\batch.

Sur la destination, il n'est pas logique de devoir saisir le chemin de la clé USB à la main, puisqu'on ne connaît (dans le cas général) pas la lettre affectée à la clé USB tant qu'on ne l'a pas insérée, et que même quand on l'a fait on ne sait pas s'il s'agit de la bonne clé.

On peut s'affranchir de cette dernière situation après avoir introduit la clé une première fois, supposons qu'elle soit reconnue comme E:\ et en saisissant VOL E: qui nous fournira le numéro de série sous la forme D4FB-0E65, constant tant qu'il n'y a pas formatage, et que nous conserverons sans le tiret dans un script de ce type, me suffisant alors de récupérer comme destination la variable %lecteur%:

@echo off

SET numserie= D4FB0E65
SET chem=\:

FOR /F "skip=1 tokens=1,2 delims=: " %%G in ('wmic logicaldisk where drivetype^=2 get name^,volumeserialnumber^') DO SET "letter=%%G" & SET "serie=%%H" & CALL :PROCESS
GOTO :EOF

:PROCESS
IF %serie%==%numserie% SET "lecteur=%letter%%lecteur%%chem%"
IF %serie%==%numserie% echo %lecteur%
pause >nul

:EOF
0