Emboîter commande "FOR" Batch

Fermé
parats - Modifié par parats le 4/07/2011 à 13:33
 parats - 7 juil. 2011 à 07:59
Bonjour,
J'aimerais emboiter plusieur commande FOR mais cela ne marche pas :

for /r "F:\" %%d in (*.jpg) do (
set tp=%%~td
for /f "tokens=1-3 delims=/: " %%a in ("%tp%") do (
set datef=%%a%%b%%c
set jf=%%a
set mf=%%b
set af=%%c)
echo jour : %jf% mois : %mf% a : %af% date du fichier: %datef%
)

Le problème pour la seconde commande FOR c'est qu'elle ne s'exécute pas (je n'est pas de nombre pour "datef ; mf ; af")
Pouvez vous m'aidez, Merci.
A voir également:

2 réponses

Bonjour et EUREKA!

Mon premier post était un peu hâtif, en effet, en lançant plusieurs fois le batch, il se met à marcher.
En fait la solution est d'utiliser le delay d'expension de variable comme ci-dessous (mettre l'option avec setlocal et quand on veut utiliser une variable en lecture, l'appeler en l'entourant du signe ! au lieu de %
Tu peux avoir l'explication en faisant sous cmd : "SET /?"
@echo off
setlocal enableDelayedExpansion
for /r "D:\Photos\2010" %%d in (*.jpg) do (
  set tp=%%~td
  echo " valeur tp " !tp!
  for /f "tokens=1-3 delims=/: " %%a in ("!tp!") do (
      set datef=%%a%%b%%c
      set jf=%%a
      set mf=%%b
      set af=%%c)
echo jour : !jf! mois : !mf! a : !af! date du fichier: !datef!
) 

Attention, moi j'ai mis e répertoire D:\Photo alors que le tien était F:\
Cordialement et désolé d'avoir donné un indication erronée a départ.
3
Merci
0
Bonjour,

C'est juste une histoire de "scope"
Ta 2ieme boucle marche, mais les variables jf, mf, af et datef sont locales à cette 2ieme boucle.
Il suffi de les initialiser dans la première pour que ça marche :
for /r "D:\Photos\2010\2010-11-15" %%d in (*.jpg) do (
  set tp=%%~td
  echo " valeur tp " %tp%
Rem initialiser des variables dans ce scope
      set datef=""
      set jf=""
      set mf=""
      set af=""
  for /f "tokens=1-3 delims=/: " %%a in ("%tp%") do (
      set datef=%%a%%b%%c
      set jf=%%a
      set mf=%%b
      set af=%%c)
echo jour : %jf% mois : %mf% a : %af% date du fichier: %datef%
) 
2
Bonjour
Il y a un pb car a "echo " ça ne m'affiche pas la date et pourtant si je j'entre la comande "SET" a la fin je voit marquer la variable avec les bon nombre pourquoi ? Et cela marche pas non plus, pourquoi ?

set datep=15112010
for /r "D:\Photos\2010\2010-11-15" %%d in (*.jpg) do (
set cp=%%t
set tp=%%~td
echo " valeur tp " %tp%
set datef=""
set jf=""
set mf=""
set af=""
for /f "tokens=1-3 delims=/: " %%a in ("%tp%") do (
set datef=%%a%%b%%c
set jf=%%a
set mf=%%b
set af=%%c)
echo jour : %jf% mois : %mf% a : %af% date du fichier: %datef%
if %datep%==%datef% xcopy "%cp%" "C:\photo\"
)

(mon but est de copier des fichier juste d'un jour)
Si vous avez une autre solution je la prendrais volontiers.

Merci pour vos réponses
0