J'ai un fichier batch qui va vérifier les mises à jour dans un répertoire puis copier les nouveaux fichiers ou les fichiers modifiés récemment dans l'autre répertoire, cependant je ne sais pas comment vérifier le répertoire source pour dire deux fichiers qui ont juste un numéro de révision ou une différence de lettre: example.pdf et exampleA.pdf. J'ai besoin de comparer les fichiers en quelque sorte par la chaîne et la date de modification. Donc, si le répertoire source a un nouveau fichier qui a été sauvegardé comme exampleB.pdf, j'ai besoin du batch pour copier ce fichier dans le répertoire de destination comme example.pdf au lieu du nouveau nom de fichier. Je veux que le fichier copié ait le nom de fichier de base si vous voulez, étant juste example.pdflot-fichier comparer les noms de fichiers similaires dans un répertoire puis copier le dernier fichier modifié et enregistrer dans un autre répertoire
Toute aide serait grandement appréciée.
Merci
@Echo Off
:: variables
set drive=G:\Backup
set backupcmd=xcopy /s /c /d /e /h /i /r /y
set revchk=if
Set _Delay=10
Set _Monitor=C:\Users\me\Desktop\Test Source Folder
Set _Base=%temp%\BaselineState.dir
Set _Chck=%temp%\ChkState.dir
Set _OS=6
Ver|Findstr /I /C:"Version 5">Nul
If %Errorlevel%==0 Set _OS=5 & Set /A _Delay=_Delay*1000
:_StartMon
Call :_SetBaseline "%_Base%" "%_Monitor%"
:_MonLoop
If %_OS%==5 (Ping 1.0.0.0 -n 1 -w %_Delay%>Nul) Else Timeout %_Delay%>Nul
Call :_SetBaseline "%_Chck%" "%_Monitor%"
FC /A /L "%_Base%" "%_Chck%">Nul
If %ErrorLevel%==0 Goto _MonLoop
echo ### Backing up...
%backupcmd% "C:\Users\me\Desktop\Test Source Folder" "C:\Users\me\Desktop\Test Destination Folder"
echo ### Checking for new file revisions...
Echo.Backup Complete!
Goto :_StartMon
:::::::::::::::::::::::::::::::::::::::::::::::::::
:: Subroutine
:::::::::::::::::::::::::::::::::::::::::::::::::::
:_SetBaseline
If Exist "%temp%\tempfmstate.dir" Del "%temp%\tempfmstate.dir"
For /F "Tokens=* Delims=" %%I In ('Dir /S "%~2"') Do (
Set _Last=%%I
>>"%temp%\tempfmstate.dir" Echo.%%I
)
>"%~1" Findstr /V /C:"%_Last%" "%temp%\tempfmstate.dir"
Goto :EOF
Merci, je vais le tester et vous le faire savoir. J'apprécie votre réponse. – cheapkid1
N'ai-je pas besoin d'un répertoire source ici aussi, je vois seulement un répertoire dest? – cheapkid1
Je ne peux pas le faire fonctionner, il s'exécute, mais ne copie pas le dernier fichier rev du dossier source vers le dossier de destination, ou même le fichier d'origine. Aucune suggestion? – cheapkid1