Batch dos copie de fichiers qui arrive tous ls jours entre 6:00

Fermé
merkiche Messages postés 6 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 17 octobre 2012 - 12 oct. 2012 à 11:22
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 18 oct. 2012 à 09:40
Bonjour,

Voilà maintenant deux semaine que je me démène comme un fou pour trouver un moyen pour copier deux fichiers, parmi les 800 que contiennent le répertoire,
Donc je dois copier deux fichiers d'un répertoire (A) vers un répertoire (B) seulement le hic ses deux fichiers arrive dans le répertoire (A) tous les jours entre 6:00 et 7:00 et font plus de 2Ko

Merci énormément de vos aides:

mon début de code est celui-là:

@Echo OFF
Setlocal enabledelayedexpansion

Set "Source=C:\Temp\Traitements"
Set "Destination=C:\Temp\"
Set "Size=2048"
:: :: :: :: :: :: :: :: ::


for /F "tokens=1-4 delims=;" %%a in ('FORFILES /P "%SOURCE%" /C "cmd /c echo @fdate;@ftime;@fsize;@path"') do

(
If %%c GTR %SIZE%
(
Set DAY=%%a
Set DAY=!DAY:/=!
Set HOUR=%%b
Set HOUR=!HOUR::=!
Echo !DAY!!HOUR!;%%d >> "%Destination%"
)
)

for /F "tokens=2 delims=;" %%# in ('Type "%TEMP%" ^| Sort /R') do (
Copy /Y %%# "%Destination%" 1>NUL

)
A voir également:

10 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
12 oct. 2012 à 13:25
hello
peuit-on voir les données produites par : 'FORFILES /P "%SOURCE%" /C "cmd /c echo @fdate;@ftime;@fsize;@path"'
0
merkiche Messages postés 6 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 17 octobre 2012
12 oct. 2012 à 13:36
Salut
J'ai mis ce bout de script pour voir ce qui cloche.
mais mon script ne sort rien du tout.
merci de ton retour
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
12 oct. 2012 à 14:11
afficher (en partie)
Set "Source=C:\Temp\Traitements"
FORFILES /P "%SOURCE%" /C "cmd /c echo @fdate;@ftime;@fsize;@path"
0
merkiche Messages postés 6 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 17 octobre 2012
12 oct. 2012 à 14:26
P:\>Set "Source=C:\Temp\Traitements"

P:\>FORFILES /P "%SOURCE%" /C "cmd /c echo @fdate;@ftime;@fsize;@path"
'FORFILES' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.

voilà ce que j'ai
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
12 oct. 2012 à 14:39
forfiles n'est pas une commande DOS standard, il faut l'installer
cette commande permet d'afficher date heure taille et noms des fichiers
for %%a in (*.*) do @echo %%~ta %%~za %%a
0
merkiche Messages postés 6 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 17 octobre 2012
12 oct. 2012 à 15:08
ok j'ai installé forfiles mais lorsque je lance ma commande il me liste tous les fichiers puis rien pas d'information date ni heure
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
12 oct. 2012 à 15:12
0
je n'y arrive pas pourtant j'ai essayer beaucoup de chose il est difficile de creer ce genre de script de copie de fichiers.?
merci pour votre aide
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
15 oct. 2012 à 10:39
ce script remplace forfiles (que je n'ai pas)
il affiche la taille et le nom des fichiers créés entre 6:00 et 6:59
@echo off
setlocal enableDelayedExpansion
for %%a in (*.*) do (
	set d=%%~ta
	set s=%%~za
	set n=%%a
	for /f "tokens=1-5 delims=: " %%g in ('echo !d! !s! !n!') do (
		if %%h EQU 6 echo %%j %%k
		)
	)
0
ok merci voilà ce que j'obtiens:
331 0000000000000000000000000000000000001907.log
331 0000000000000000000000000000000000003638.log
5659 0000000000000000000000000000000000005098.log
36176 0000000000000000000000000000000000005099.log
11185 0000000000000000000000000000000000005152.log
51838 0000000000000000000000000000000000005153.log
3749 0000000000000000000000000000000000005257.log
41755 0000000000000000000000000000000000005258.log
8041 0000000000000000000000000000000000005351.log
32612 0000000000000000000000000000000000005352.log
6317 0000000000000000000000000000000000005409.log
49993 0000000000000000000000000000000000005410.log
10975 0000000000000000000000000000000000005495.log
42286 0000000000000000000000000000000000005496.log
6972 0000000000000000000000000000000000005595.log
40804 0000000000000000000000000000000000005596.log
13469 0000000000000000000000000000000000005681.log
45284 0000000000000000000000000000000000005682.log
15490 0000000000000000000000000000000000005778.log
34134 0000000000000000000000000000000000005779.log
10451 0000000000000000000000000000000000005862.log
46818 0000000000000000000000000000000000005863.log
1079 0000000000000000000000000000000000005864.log


maintenant le truc c'est de copier ses fichiers dans un répertoire puis de copier uniquement ceux de la date du jour et qui sont plus de 10000 dans un autre répertoire.


franchement tu es trop fort merci de ton aide
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
16 oct. 2012 à 08:55
que faut-il copier ?
les fichiers du jour ou ceux entre 6 et 7h ?
0
il faut copier les fichier du jour qui arrive entre 6h00 et 7h00 de plus de 2Ko
du rep A vers le rep B.
merci
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
16 oct. 2012 à 09:25
modifier SOURCE et DEST
@echo off
set SOURCE=\dir
set DEST=\dest
cd "%SOURCE%"
setlocal enableDelayedExpansion
for %%a in (*.*) do (
	set d=%%~ta
	set s=%%~za
	set n=%%a
	for /f "tokens=1-5 delims=: " %%g in ('echo !d! !s! !n!') do (
		if %%h EQU 6 if %%j GEQ 2048 copy /y "%%k" "%DEST%"
		)
	)
0
Déjà merci pour cela.
donc maintenant il faudrait simplement lui dire de ne prendre que les fichiers date du jour comme aujourd'hui le 16-10-2012
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
16 oct. 2012 à 10:08
ajouter un test à cette ligne
if %%g == %DATE%  if %%h EQU 6 if %%j GEQ 2048 copy /y "%%k" "%DEST%"
0