Forum Clubic

Nom de fichier avec espace en Batch

Bonjour
je ne comprend pas pour quoi il n’inscrie pas de nom long dans le fichier, si j’ai des espace dans un nom de fichier il ne prend que le premier mots même avec l’option tonkens=4,, svp aidez moi je veux faire le listing des fichiers d’un répertoire dans un fichier text. Voici ma ligne de code :
for /f "skip=7 tokens=4,
" %%a in (‘dir i:\test\test2’) do echo%%a>>i:\test\filles.txt :frowning:
Je suis en XP sp2 fr clavier=fr ca /fr ca et j’utilise PowerBatch pour ecrire mes fichiers batch
si vous pensez à une meilleur technique… il faut que ca soit en batch… P.s. je débutant en programation…

Merci d’avance

Salut,
tu analyse le résultat de la fonction dir (notamment la fin avec le nombre d’octet) ce qui n’est pas facile, autant boucler directement sur les fichiers


for  %%a in (*.*) do echo %%a

Merci du conseil deltree, J’ai testé ton conseil et pareil pas de changemnt dans mon fichier

[code]
for /f "skip=7 tokens=4," %%a IN ('dir i:\test\test2*.’) do echo.%%a>>i:\test\filles.txt
[\code]

Marche toujours pas… :frowning: sniff

C’est le dir qu’il faut enlever, (et les /f etc…)



for %%a IN (i:\test\test2\*.*) do echo.%%a>>i:\test\filles.txt


Edité le 16/01/2008 à 17:24

MERCI cela fonctionne très bien!
c’est soouvent plus simple que l’on pense…


for %%a IN (i:\test\test2\*.*) do echo.%%a>>i:\test\filles.txt

:super: Merci

[edit] solution incorrecte et grillé par deltree
Edité le 16/01/2008 à 17:58

:wink:
avec la méthode à Zarathoustra, ajouter “tokens=*”

j’avais oublié le tokens en effet mais ta solution est plus simple :wink: :jap:

Merci


@echo off
for /F %%i in ('dir i:\test\test2 /B /A-D') do echo %%i>>i:\test\filles.txt 

ca ressemble plus a ce que je voulais mais… je fais tout ca pour faire un batch qui vas déplacé les fichiers qui on été modifié entre tel date et tel date…
Si vous avez des idées… moi je pensais faire un dir /s /tw /4 et vérifié le premier champs(date si compris dans mon choix) si oui move le fichier dans un autre répertoire…

Merci d’avance :wink:

avec un XCOPY /D mais il faut bien regarder l’aide avec “xcopy /?” puis ensuite la suprression des fichiers copiés en parcourant le résultat du xcopy par un for, mais ça fait un peu de boulot :smiley:

xcopy /d c ok mais ca fait à partir de tel date… et nom entre date1 et date2 c’est pour ca que j’asseille de progrmaé un for qui un avec les date comme ca je pourais faire u test sur la date avant… mais je n’arrive pas à extraire les nom de fichiers qui continne des espaces…
Vous allez rire mais ca fait au moin 18h et plus en trois jours que je passe a asseillé de faire ca…

merci de votre grande Aide

:etonne2:

En ligne de commande ça va être chaud à mon avis de gérer les dates
j’avais modifié un script vbs trouvé sur le net pour faire un truc similaire


Set oFSO = CreateObject("Scripting.FileSystemObject")
dossier = oFSO.GetFolder("j:\test")
Obsolete = Date() - 30 

For each fichier in oFSO.GetFolder(dossier).Files
If (fichier.DateCreated < Obsolete) then
oFSO.DeleteFile fichier.Path
End if
Next

For each repertoire in oFSO.GetFolder(dossier).SubFolders
For each fichier in oFSO.GetFolder(repertoire).Files
If (fichier.DateCreated < Obsolete) then
oFSO.DeleteFile fichier.Path
End If
Next
Next

ça supprimer dans j:\test les fichiers vieux de plus de 30jours
Je connais pas vraiment le vbscript mais on doit pouvoir le modifier sans trop de difficulté pour qu’il supprime les fichiers entre deux dates en modifiant la ligne
Obsolete = Date() - 30
en utilisant peut-être la fonction DateDiff www.commentcamarche.net…
Mais si qq’un qui s’y connait en vbs pouvait confirmer et t’aider à la faire

tiens j’ai fait ça qui devrait fonctionner
tu crées un fichier .vbs dans lequel tu copies/colles ce code


Set oFSO = CreateObject("Scripting.FileSystemObject")
DOSSIER = oFSO.GetFolder("i:\test")
DATE1=DateValue("01/01/2008")
DATE2=DateValue("17/01/2008")
INTERVAL=DateDiff("d",DATE1,DATE2)
DESTINATION=("i:\test\test2\")

For each fichier in oFSO.GetFolder(DOSSIER).Files
DATEMODIF=DateValue(fichier.DateLastModified)
DIFF=DateDiff("d",DATE1,DATEMODIF)
if (DIFF > 0) and (DIFF < INTERVAL) then
oFSO.MoveFile fichier.Path, DESTINATION
End if
Next

Tu définies DATE1 et DATE2 pour ton intervalle (tu remplaces 01/01/2008 et 17/01/2008)
Tu définies DOSSIER pour ton répertoire de base et DESTINATION pour le répertoire ou seront déplacés tes fichiers (tu remplaces i:\test et i:\test\tes2\ (à la fin de i:\test\test2\ il est obligatoire de mettre un dernier antislash) )

PS: Ce script ne fonctionne que sur 1 seul niveau d’arborescence i:\test et pas sur les fichiers des sous répertoires
Edité le 17/01/2008 à 15:03