Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

copie fichiers par date de création

10 réponses
Avatar
Lanidrak
Bonjour à tous.

Voici le problème. Dans le répertoire c:\1 il y aura des fichiers pdf qui
seront déposé à divers moments de la journée. Ce que je veux faire, c'est un
couper-coller des fichiers du répertoire c:\1 vers c:\2 ; mais uniquement les
fichiers qui auront été créer entre 0h00 et 18h00 la journnée où sera exécuté
le script. Biensûr, le script sera exécuté à chaque jour

Merci pour les solutions

10 réponses

Avatar
Michel Claveau
Bonjour !

Tu peux t'inspirer du Batch ci-dessous (à adapter)

@+

Michel Claveau



::copie-tranche-horaire (pour XP ou WS2003)
:: ne marche pas pour les noms de fichiers de plus de 255 caractères

@echo off
setlocal

::dir de destination de la copie
set DEST=C:DEVBAT

::source (pattern des fichiers)
set REP=C:DEVBATex*.bat

::date de sélection
set SDATE".12.2005

::entre 13h.00 (compris)
set HDEB

::et 19h.59 (compris)
set HFIN"


for /F "usebackq delims=" %%a in (`dir %REP% /N /4 /O:D`) do call
:SUB %%a

endlocal
goto :EOF


:SUB
set LIG=%*
set H=%LIG:~12,2%
set TDAT=%LIG:~0,10%
if /I "%LIG:~0,10%" EQU "%SDATE%" if /I %H% GEQ %HDEB% if /I %H%
LEQ %HFIN% echo XCOPY %LIG:~36,255% %DEST% /Y
goto :EOF

--
@-salutations

Michel Claveau
Avatar
Méta-MCI
Oups !

Petite erreur. Il faut remplacer la ligne
set HFIN"
par
set HFIN
pour être en conformité avec les commentaires

Désolé.


MCI
Avatar
Gilles LAURENT
"Lanidrak" a écrit dans le message
de news:
| Bonjour à tous.

Bonjour,

| Voici le problème. Dans le répertoire c:1 il y aura des fichiers pdf
| qui seront déposé à divers moments de la journée. Ce que je veux
| faire, c'est un couper-coller des fichiers du répertoire c:1 vers
| c:2 ; mais uniquement les fichiers qui auront été créer entre 0h00
| et 18h00 la journnée où sera exécuté le script. Biensûr, le script
| sera exécuté à chaque jour

Une version batch alternative permettant de déplacer les fichiers créés
entre 0h00 et 17h59 d'un répertoire vers un autre. Les répertoires
source et destination sont transmis comme arguments :

+++ Usage
moveFile <source> <destination>

+++ Exemples
>moveFile C:1*.pdf C:2
>moveFile "C:ma source" "D:ma destination"

--- Coupez ici : moveFile.cmd ---

@echo off
setlocal
set d=dir /tc /a-d
set p1=findstr "[0-1].:" & set p2=findstr /v "1[8-9]:"
for /f "tokens=4*" %%i in ('%d% "%~1"^|%p1%^|%p2%') do (
echo Moving file %%i ...
move /y "%~1%%i" "%~2"
)
endlocal

--- Coupez ici : moveFile.cmd ---

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Lanidrak
Voilà mon bout de code qui extiste déjà. Alors comment inclure un condition
dans copy pour que les fichiers copier soit uniquement des fichiers déposé
dans ce répertoire (c:1) dont la date de création soit inférieur à 18h00.


mkdir %date:~-10%
copy c:1*.pdf c:2%date:~-10%
del c:1*.pdf
Avatar
Gilles LAURENT
"Lanidrak" a écrit dans le message
de news:
| Voilà mon bout de code qui extiste déjà. Alors comment inclure un
| condition dans copy pour que les fichiers copier soit uniquement des
| fichiers déposé dans ce répertoire (c:1) dont la date de création
| soit inférieur à 18h00.

Vous avez le script "prêt à l'emploi" un cran au dessus !
Cela ne répond pas à votre besoin ?

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Lanidrak
Votre batch fonctionne très, mais je voulais simplement savoir comment
imbriquer les 2 scripts. Le but final est d'avoir un répertoire un répertoire
de réception et de l'autre les sauvegardes journalière d'où le mkdir
%date:~-10% et dans ce processus de sauvegarde, les fichiers déposés après
18h00 ne seront pas tranféré dans le répertoire d'aujourd'hui mais dans celui
de demain. Ainsi donc, le répertoire du 9-11-2006 contiendra des fichiers qui
auront été déposés entre 18h00 le 8 nov et 17h59 le 9 nov.

Voilà pour un peu plus de précision
Avatar
Gilles LAURENT
"Lanidrak" a écrit dans le message
de news:
| Votre batch fonctionne très, mais je voulais simplement savoir comment
| imbriquer les 2 scripts. Le but final est d'avoir un répertoire un
| répertoire de réception et de l'autre les sauvegardes journalière
| d'où le mkdir %date:~-10% et dans ce processus de sauvegarde, les
| fichiers déposés après 18h00 ne seront pas tranféré dans le
| répertoire d'aujourd'hui mais dans celui de demain. Ainsi donc, le
| répertoire du 9-11-2006 contiendra des fichiers qui auront été
| déposés entre 18h00 le 8 nov et 17h59 le 9 nov.
|
| Voilà pour un peu plus de précision

Ce "cahier des charges" n'a plus rien à voir avec celui initialement
formulé ! Pour ce dernier, je pense que la solution la plus simple
consiste à "fermer les portes" (au sens sauvegarde) à 18h00 et donc
planifier l'exécution de votre script de sauvegarde à 18H00(+/-). Dans
ce scénario, tous les documents déposés dans le répertoire d'acceuil
seront automatiquement sauvegardés. Les fichiers créés après 18h00
seront donc dans ce cas sauvegardés le lendemain et dans le répertoire
du lendemain. Est-ce vraiment une bonne stratégie de sauvegarde ? Quand
mes collaborateurs restituent des fichiers, ils aiment que ce soit à la
date spécifiée par l'utilisateur final.

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Lanidrak
Je crois que je vais adopter cette politique, c'est la solution la plus simple.


"Lanidrak" a écrit dans le message
de news:
| Votre batch fonctionne très, mais je voulais simplement savoir comment
| imbriquer les 2 scripts. Le but final est d'avoir un répertoire un
| répertoire de réception et de l'autre les sauvegardes journalière
| d'où le mkdir %date:~-10% et dans ce processus de sauvegarde, les
| fichiers déposés après 18h00 ne seront pas tranféré dans le
| répertoire d'aujourd'hui mais dans celui de demain. Ainsi donc, le
| répertoire du 9-11-2006 contiendra des fichiers qui auront été
| déposés entre 18h00 le 8 nov et 17h59 le 9 nov.
|
| Voilà pour un peu plus de précision

Ce "cahier des charges" n'a plus rien à voir avec celui initialement
formulé ! Pour ce dernier, je pense que la solution la plus simple
consiste à "fermer les portes" (au sens sauvegarde) à 18h00 et donc
planifier l'exécution de votre script de sauvegarde à 18H00(+/-). Dans
ce scénario, tous les documents déposés dans le répertoire d'acceuil
seront automatiquement sauvegardés. Les fichiers créés après 18h00
seront donc dans ce cas sauvegardés le lendemain et dans le répertoire
du lendemain. Est-ce vraiment une bonne stratégie de sauvegarde ? Quand
mes collaborateurs restituent des fichiers, ils aiment que ce soit à la
date spécifiée par l'utilisateur final.

--
Gilles LAURENT
http://glsft.free.fr





Avatar
Gilles LAURENT
"Gilles LAURENT" a écrit dans le message de
news:%238grVk$

La version PowerShell ;-)

+++ Usage
powershell .moveFile.ps1 <source> <destination>

+++ Exemple
>powershell .moveFile.ps1 C:1*.pdf C:2

--- Coupez ici : moveFile.ps1 ---

$target=$args[1]
Get-ChildItem $args[0] | Where-Object {
$_.CreationTime.ToShortTimeString() -lt "18:00" `
-and ! $_.PSIsContainer
} | foreach {
$_.FullName;
$_.MoveTo($target + "" + $_.name)
}

--- Coupez ici : moveFile.ps1 ---

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Jacques Barathon [MS]
"Gilles LAURENT" wrote in message
news:
"Gilles LAURENT" a écrit dans le message de
news:%238grVk$

La version PowerShell ;-)

+++ Usage
powershell .moveFile.ps1 <source> <destination>

+++ Exemple
>powershell .moveFile.ps1 C:1*.pdf C:2

--- Coupez ici : moveFile.ps1 ---

$target=$args[1]
Get-ChildItem $args[0] | Where-Object {
$_.CreationTime.ToShortTimeString() -lt "18:00" `
-and ! $_.PSIsContainer
} | foreach {
$_.FullName;
$_.MoveTo($target + "" + $_.name)
}

--- Coupez ici : moveFile.ps1 ---


Un peu plus court:

$source, $cible = $args
dir $source |
where {!$_.PSIsContainer -and $_.CreationTime.Hour -lt 18} |
foreach {move $_ $cible}

Jacques