Batch : Traitement sur une date de fichier
Résolu/Fermé
SCOU75
-
24 juin 2012 à 10:14
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 - 24 juin 2012 à 15:14
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 - 24 juin 2012 à 15:14
A voir également:
- Batch : Traitement sur une date de fichier
- Fichier batch - Guide
- Batch net use - Forum Réseau
- Batch renommer une partie du nom de plusieurs fichiers - Guide
- Input batch - Forum Autoit / batch
- Script batch utile ✓ - Forum Programmation
1 réponse
dubcek
Messages postés
18753
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
7 novembre 2024
5 619
24 juin 2012 à 11:08
24 juin 2012 à 11:08
hello
à l'intérieur d'une boucle for, il faut utiliser ! pour modifier des variables
essayer:
à l'intérieur d'une boucle for, il faut utiliser ! pour modifier des variables
essayer:
@echo off setlocal enableDelayedExpansion set nom=%1% for /f "skip=4 tokens=1,2" %%a in ('dir "%nom%" /tw /-c /a:-d-s-h^|find /v "(s)"') do ( echo %%a set n=%%a set jj=!n:~0,2! echo jj = !jj! set mm=!n:~3,2! echo mm = !mm! set yy=!n:~6,4! echo yy = !yy! set REP=!yy!!mm!!jj! echo !REP! & mkdir !REP!)
24 juin 2012 à 14:26
Lorsque j'affiche &&a en début de boucle j'obtiens "19/05/2012" et si j'affiche %n% après l'affectation j'obtiens "24/06/2012" qui est la date du jour.
Rappel de mon script :
@ECHO OFF
setlocal enableDelayedExpansion
set nom=%1%
for /f "skip=4 tokens=1,2" %%a in ('dir "%nom%" /tw /-c /a:-d-s-h^|find /v "(s)"') do (
echo %%a
set n=%%a
echo %n%
)
24 juin 2012 à 14:43
24 juin 2012 à 14:53
1) Cliquez sur Démarrer/Exécuter puis saisissez : regedit
2) Ouvrez HKEY_CURRENT_USER\Software\Microsoft\Command Processor.
3) Dans le volet de droite créez une nouvelle valeur DWORD nommée DelayedExpansion.
4) Éditez cette valeur et affectez comme données de la valeur le chiffre 1.
5) Quittez puis relancez "cmd".
Le script qui fonctionne :
@ECHO OFF
setlocal enableDelayedExpansion
set nom=%1%
for /f "skip=4 tokens=1,2" %%a in ('dir "%nom%" /tw /-c /a:-d-s-h^|find /v "(s)"') do (
echo %%a
set n=%%a
echo n : !n!
set jj=!n:~0,2! && echo jj : !jj!
set mm=!n:~3,2! && echo mm = !mm!
set yy=!n:~8,2! && echo yy = !yy!
set REP=!yy!!mm!!jj! && echo REP : !REP!
)
Resultat affiché :
19/05/2012
n : 19/05/2012
jj : 19
mm = 05
yy = 12
REP : 12 05 19
Question : Savez-vous comment faire pour concaténer mes variables yy mm et jj sans avoir d'espace ?
24 juin 2012 à 15:10
En les forçant en numeriable, le pb est détourné.
Script final :
@ECHO OFF
setlocal enableDelayedExpansion
set nom=%1%
for /f "skip=4 tokens=1,2" %%a in ('dir "%nom%" /tw /-c /a:-d-s-h^|find /v "(s)"') do (
echo %%a
set n=%%a && echo n : "!n!"
set /a jj=!n:~0,2! && echo jj : "!jj!"
set /a mm=!n:~3,2! && echo mm = "!mm!"
set /a yy=!n:~6,4! && echo yy = "!yy!"
set REP=!yy!-!mm!-!jj! && echo REP : "!REP!"
mkdir !REP!
)
Résultat :
19/05/2012
n : "19/05/2012 "
jj : "19"
mm = "5"
yy = "2012"
REP : "2012-5-19 "
Et le répertoire "2012-5-19" est bien créée
Merci pour votre aide sur le ! dans les FOR, je n'avais rien vu sur le sujet et j'aurais pu chercher longtemps.
24 juin 2012 à 15:14