Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
renommer fichier et For in do
Auteur Message
Répondre en citant
Message renommer fichier et For in do 
Bonsoir tout le monde. Si vous voulez bien m'aider.
En lisant le Tuto d'Astase je suis arrivé à cette partie et je comprends pas pourquoi le code ne marche pas, pourtant c'est le même écrit par Astase.

le code est le suivant:
Code:
@echo off
if "%1"=="" goto PasSource
if not defined date goto PasDate
REM - La date stockée dans %date% contient le signe "/"
REM qu'on ne peut utiliser pour renommer les fichiers car
REM c'est un caractère spécial de Windows. On le remplace donc par "_"
for /f "tokens=1-3 delims=/" %%a in ("%date%") do set newdate=%%a_%%b_%%c
REM - On renomme le fichier
ren "%1" "%1_%newdate%.%2"


comme 1er paramètre j'ai essayé C:\1fichier C:\1fichier.txt et 1fichier et rien ne marche
il me donne ce message





______________________________________________________
Un nul qui veut apprendre
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message renommer fichier et For in do 
Salut,

Plusieurs remarque sur ce code :

1 : Ligne Inutile
Shocked
Citation:
if not defined date goto PasDate


C'est une situation qui n'arrivera jamais %date% étant une variable système

Tu peux la détourner :

Code:
set date=1234


mais pas l'annuler :

Code:
set date=


Elle existera TOUJOURS !

2 : La boucle FOR pour une substitution

Dans ce cas spécifique je ne vois pas l'utilité d'utiliser un boucle FOR pour faire une simple substitution.
un simple :

Code:
set newdate=%date:/=_%


suffit amplement.


La boucle FOR peut être intèressante dans le cas ou tu voudrais séparer jour, mois et année.

Code:
for /f "tokens=1-3 delims=/" %%a in ("%date%") do (echo JOUR = %%a
                                                   echo MOIS = %%b
                                                   echo ANNE = %%c)



Donc en resumé :

Code:


@echo off
set newdate=%date:/=_%
ren "%1" "%1_%newdate%.%2"



3 :

Citation:
comme 1er paramètre j'ai essayé C:\1fichier C:\1fichier.txt et 1fichier et rien ne marche


Tu ne peux pas utiliser un chemin dans le 2éme argument de la fonction RENAME :

Faux :

Code:
ren c:\toto\test.txt c:\toto\new_test.txt


Juste :

Code:
ren c:\toto\test.txt new_test.txt


donc dans ton cas tu devras entrer ton fichier comme cela : 1fichier txt

Okay



Dernière édition par sachadee le Sam 21 Sep 2013 - 17:43; édité 1 fois

______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message renommer fichier et For in do 
Merci sachadee, ta réponse m'a ouvert les yeux sur des choses.
D'abord
Code:
set newdate=%date:/=_%
m'était complètement inconnu , je me suis entraîné avec, et j'ai remarqué qu'on peut utiliser par exemple &, sûrement parce que c'est réservé au programme pour dire "et" de même que | "ou"
C'est aussi une nouveauté pour moi cette façon d'utilier echo:
Code:
for /f "tokens=1-3 delims=/" %%a in ("%date%") do (echo JOUR = %%a
                                                   echo MOIS = %%b
                                                   echo ANNE = %%c)

Mais il subsiste un problème dans ce code, car j'ai toujours le mêm message d'erreur
Code:
ren "%1" "%1_%newdate%.%2"

si mon %1=1fichier , comment le programme doit le trouver si on ne spécifie pas le chemin, soit C:\1fichier.txt.
et si %1=c:\1fichier.txt, alors tout le chemin sera introduit dans le 2ème nom.
Donc ce que je trouve logique (mais ça ne marche pas non plus) c'est de faire:
%1=1fichier avec ce code
Code:
@echo off
set newdate=%date:/=_%
ren C:\"%1" "%1_%newdate%.%2"





______________________________________________________
Un nul qui veut apprendre
Répondre en citant
Message renommer fichier et For in do 
Tu peux faire un call et utiliser les "Delimiters" :

Code:

@echo off
set $ndate=%date:/=_%
call:traite %1
goto:eof

:traite
ren %1 %~n1_%$ndate%%~x1



Ainsi tu peux mettre le chemin complet de ton fichier à renommer et tu n'as plus besoin de rentrer l'extension (%2).

Donc :

Code:
renomme.bat c:\fichier1.txt





______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message renommer fichier et For in do 
Merci pour ton aide
Je ne peux rien dire de plus à ce sujet car, je suis le Tuto d'Astase, en lisant ton code j'ai rencontré la commande Call que je ne connais pas encore; je suis allé donc voir le tuto et j'ai vu qu'il me reste quelques pages pour y arriver.
Merci pour les astuces que j'ai appris dans cette discussion.




______________________________________________________
Un nul qui veut apprendre
Message renommer fichier et For in do 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch