Bonjour.
Est-il possible de rechercher un fichier sur le disque et de le déplacer dans un
autre répertoire ? (move)
J' ai développé plusieurs syntaxes en partant de:
mais ça ne fonctionne pas !Code:dir /b /s c:\fichier.bat >
une piste ? merci.
Version imprimable
Bonjour.
Est-il possible de rechercher un fichier sur le disque et de le déplacer dans un
autre répertoire ? (move)
J' ai développé plusieurs syntaxes en partant de:
mais ça ne fonctionne pas !Code:dir /b /s c:\fichier.bat >
une piste ? merci.
Utilise for pour traiter ligne par ligne le résultat de dir
utilise les opérateurs de batch pour réccupérer uniquement le nom du fichier dans for (extrait de l'aide de for : )Code:
1
2
3 for /f "delims=" %%i in ('dir /b /s c:\') do ( ... )
Ensuite tu fais un simple pour finaliserCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 De plus, la substitution de références de variables FOR a été améliorée Vous pouvez maintenant utiliser la syntaxe optionnelle suivante*: %~I - étend %I en supprimant les guillemets (") %~fI - étend %I en nom de chemin d'accès reconnu %~dI - étend %I en lettre de lecteur uniquement %~pI - étend %I en chemin d'accès uniquement %~nI - étend %I en nom de fichier uniquement %~xI - étend %I en extension de fichier uniquement %~sI - chemin étendu contenant uniquement des noms courts %~aI - étend %I en attributs du fichier %~tI - étend %I en date/heure du fichier %~zI - étend %I en taille du fichier %~$PATH:I - parcourt les répertoires de la variable d'environnement PATH et étend %I en nom du premier fichier reconnu trouvé. Si le nom de la
)Code:if %%i EQU %OccurenceFichier% (move %%i NewRepDest
Attention à utiliser des variables local (avec des !) avec l'instruction setlocal ENABLEDELAYEDEXPANSION pour rafraichir la valeur des variables à l'intérieur de for.
Note la syntaxe %%i n'est valable QUE dans un script, en console il faut utiliser %i seulement
oui mais bon !
on peut pas faire plus simple ?
puisqu' on parcourt c: (sous répertoire inclus) entiérement avec l attributs /s ?
et avec if exist file .... etc
tu peux essayer find aussi qui cherchera tous les occurences du nom que tu lui fournit. Mais de toute manière, tu passeras toujours par une boucle for en find e compte, en batch, tu n'as pas le choix, il n'existe que des fichiers comme type de variable structurée.
Oui, alors j' ai fait ceci:
si tu peux me corriger.
avec cette option pour tester: del /q "%%i"Code:for /f "delims=" %%i in ('dir /b /s c:\fichier.bat') do move %%i %windir%
ça fonctionne, mais pas pour les fichiers .exe ! ?
Si ! ça fonctionne sur les .exe. ! aussi.