Script batch copie et sauvegarde de fichier - Shell/Batch - Programmation
Marsh Posté le 27-08-2004 à 09:47:01
reformulation
os : windows 2000
1 repertoire bexp
bexp001.txt
bexp002.txt
bexp003.txt
2 eme repertoire exp
1 seul fichier qui s'appelle exp.txt
j'aimerais prendre le 1er fichier du repertoire bexp le mettre dans le repertoire exp et le renommer exp.txt puis supprimer le fichier bexp.txt du repertoire bexp
refaire ceci jusqu'a ce que le repertoire bexp soit vide
Marsh Posté le 27-08-2004 à 09:59:56
Euh si tu fais ca à la fin ton rep bexp est vide et ton rep exp contient un fichier exp.txt qui à pour contenu le dernier des fichiers bexp.txt...
Pour faire ca tu peux aller plus vite tu copie le dernier, tu le renomme et tu les effaces tous mais je pense que du as du mal formuler ton pb...
Marsh Posté le 27-08-2004 à 12:20:19
Reformulation:
En fait, j'ai un répertoire dans lequel se trouve une liste de fichiers créés le même jour mais pas à la même heure. Ce que j'aimerai faire, c copier le plus ancien dans un autre répertoire et ensuite le supprimer.
Marsh Posté le 27-08-2004 à 13:02:16
Je t'ai fait un batch qui saisi au clavier le rep origine et le rep destination et qui te déplace les fichiers contenus de l'un à l'autre et les efface dans le premier
Si y a autre chose que tu veux faire explique toi clairement
mon batch fonctionne sous xp je pense que sous 2000 aussi
@echo off
cls
set path=
set /p path=Quel est le chemin du repertoire origine (ex: c:\rep)?
if not '%path%'=='' set path=%path:~0%
set path2=
set /p path2=Quel est le chemin du repertoire destination (ex: c:\rep)?
if not '%path2%'=='' set path2=%path2:~0%
cd %path%\
dir *.* /b /o:n >c:\temp.txt
for /f %%i in (c:\temp.txt) do (
move /y %path%\%%i %path2%\
cd %path%\
erase /f /q %%i
)
Marsh Posté le 27-08-2004 à 14:04:17
ton dir met tous les fichiers existant du repertoire à l'interieur d'un autre fichier
moi j'aimerais prendre que le fichier le plus ancien du repertoire et le copier ds un autre repertoire
puis le supprimer du 1er repertoire
exemple :
rep1 contient :
essai1.txt
essai2.txt
essai3.txt
essai4.txt
etc
copier juste essai1.txt ds un autre repertoire (ex rep2) et le renommer en test.txt ds rep2
et supprimer essai1.txt du repertoire rep1
ensuite
prendre essai2.txt de rep1 et l'envoyer ds rep2
en le renommant aussi essai1.txt puis supprimer essai2.txt de rep1
etc jusqua ce que il n'y ai plus de fichier dans rep1
merci de ton aide
etc...
Marsh Posté le 27-08-2004 à 14:20:00
Tiens je t'ai rajouté la commande ren donc après déplacement je renomme le fichier en essai0 puis essai1 ... autant qu'il y a de fichiers à déplacer...
je ne comprends pas pkoi tu veux séparer les actions mais il est facile de modifier mon prog à ta sauce...
@echo off
cls
set path=
set /p path=Quel est le chemin du repertoire origine (ex: c:\rep)?
if not '%path%'=='' set path=%path:~0%
set path2=
set /p path2=Quel est le chemin du repertoire destination (ex: c:\rep)?
if not '%path2%'=='' set path2=%path2:~0%
cd %path%\
dir *.* /b /o:n >c:\temp.txt
set j=0
for /f %%i in (c:\temp.txt) do (
set /a j=%j%+1
move /y %path%\%%i %path2%\
ren %path2%\%%i essai%j%
set /a j=%j%+1
cd %path%\
erase /f /q %%i
)
Marsh Posté le 27-08-2004 à 14:25:17
je recommence lol
rep1 rep2
essai1.txt test.txt
essai2.txt
essai3.txt
mcopier essai.txt ds rep2 et le nommer test.txt
donc ecraser le test.txt qui existe deja
je ne veut pas mettre mon essai1.txt ds le fichier test.txt
tu vois ce que je veux dire?
Marsh Posté le 27-08-2004 à 14:27:21
quand essai1.txt est ds rep2 et renommer test.txt
je veux ecraser le fichier essai1.txt de rep1
ensuite je voudrai copier essai2.txt ds rep2 et le renommer en test.txt et j'ecraserai essai2.txt de rep1
etc ...
jusqu'a ce qu'il n'y ai plus de fichier ds rep1
Marsh Posté le 27-08-2004 à 14:38:10
tu ne peux pas avoir plusieurs fichiers test.txt dans rep2...
donc si je te suis ca rejoint mon premier post:
Posté le 27-08-2004 à 09:59:56 profil edit answer MP
Euh si tu fais ca à la fin ton rep bexp est vide et ton rep exp contient un fichier exp.txt qui à pour contenu le dernier des fichiers bexp.txt...
Pour faire ca tu peux aller plus vite tu copie le dernier, tu le renomme et tu les effaces tous mais je pense que du as du mal formuler ton pb...
Marsh Posté le 27-08-2004 à 14:41:01
dit moi juste comment prendre le dernier fichier de rep1 pour le mettre ds rep2 ?
Marsh Posté le 27-08-2004 à 15:06:14
c un peu du bricolage mais bon:
la je bouge le dernier fichier de path dans path2 et je l'efface dans path ok?
@echo off
cls
cd path
dir *.* /b /o:n >c:\temp.txt
sort /r c:\temp.txt
for /f %%i in (c:\temp.txt) do (
move /y path\%%i path2\
cd path\
erase /f /q %%i
goto :end
)
:end
exit
Marsh Posté le 27-08-2004 à 15:16:36
merci ca a l'air de marcher j'aurais quelques demandes supplemantaires peut etre
Marsh Posté le 27-08-2004 à 16:08:23
sans rire la prochaine fois explique mieux ton pb je suis tjrs pas sur de ce que tu voulais faire...
Marsh Posté le 27-08-2004 à 08:46:09
je vous explique mon petit probleme
bexp ou tous les jours des fichiers tombent dedans ( 10 , 20 ,30 ) on ne sait pas le nombre a l'avance
exp
je veut faire un batch avec commande dos
j'ai un repertoire :
c
les fichier s'appeleront bexp0001 bexp 002 ....
on voudrait copier le 1er fichier de la liste ( peut etre en scrutant le dossier?) vers le repertoire c
de plus nous changeront son nom le fichier s'appelant bexp001 passera en fichier qui s'appelera exp
j'aimerais copier juste le 1er fichier du repertoire bexp
j'arrive a copier tous les fichiers du repertoire bexp mais je n'arrive pas a prendre juste le 1er fichier
Il faut aussi scruter le repertoire exp pour savoir si il y a deja un fichier ds le repertoire exp si c le cas on ne fait rien
si il n'y a rien il faut recuperer le 1er fichier du repertoire bexp
puis nous recommencons la manipulation en prenant le fichier qui suit ds le repertoire bexp jusqu'a ce qu'il n'y ai plus de fichier ds le repertoire bexp
merci de votre aide