2016-02-03 1 views
0

Ive a regardé ici Batch file to copy directory if it has a later created date than the target directoryfichier batch - Copier dernière par date de création et chaîne de texte

for /f "tokens=*" %%a in ('dir/b /od \\machine\c$\location') do set newest=%%a 
xcopy /e /k "%newest%" "\\machine\c$\otherlocation" 
popd 
pause 

ne fonctionne pas pour moi: (expliqué ci-dessous et ci-dessus est le im code à l'aide)

Dos SHOWS "xcopy/e/k" fichier.bat "" emplacement "fie non trouvé - fichier.bat 0 Fichier (s) copié (s)" chose est ce fichier n'est pas le plus récent créé

J'ai essayé divers morceaux de code que je ne peux pas travailler.

Que Im essayant d'atteindre:

Id comme un fichier batch qui recherche un répertoire par date de création choisissez la dernière date de création puis copier dans une autre direction par exemple Le fichier créé à 08h16 sera copié plutôt que le fichier créé à 08h15 le jour de la création.

Ce serait incroyable si ce lot pourrait faire une recherche par date de création, type de fichier et une chaîne de texte à partir du nom de fichier Par exemple

Fichiers: (en format jour/mois/Heure)

Test01010815.bat created 01/01 08:15 
Test01020817.bat created 01/02 08:17 
Test01020818.csv created 01/02 08:18 
Test01020819.csv created 01/02 08:19 

puis copie le CSV que je veux CSV et que le fichier en bas comme il a été le dernier créé CSV

Dans le même temps ont essayé:

for /f "delims=" %%i in ('dir /b /a-d /od "\\location\STARTTofFILEname*.*"') do set "LatestModifiedFile=%%~i" 
xcopy /F /Y "\\el-1311932\c$\batch\export\exe\%LatestModifiedFile%" "\\el-1311932\c$\batch\exe\test\StockExport.csv" 
+0

"Ne fonctionne pas pour moi" n'explique pas ce qu'il a fait que vous ne vouliez pas faire, ou ce qu'il n'a pas fait que vous vouliez qu'il fasse. De votre description, le code que vous avez posté * devrait * fonctionner *. Le nom de fichier est-il suffisant pour votre critère «créé en dernier»? C'est-à-dire, le nom est-il fiable, ou voulez-vous vraiment traiter par create-date? – Magoo

+0

Modifiez le sujet. Je voudrais vraiment traiter par date de création (augmentation de la vitesse possible?) Je vais avoir des centaines de fichiers dans ce répertoire. Je pourrais tirer en utilisant le nom de fichier mais je ne voulais pas vraiment que le lot analyse tous les noms de fichier car je ne veux pas que ce lot ralentisse quelque chose ou prenne trop de temps. Comme vous pouvez le voir, mon but est de vérifier quand le fichier a été créé, puis de copier le dernier dans un répertoire différent, si vous pensez que l'analyse du nom de fichier est correcte, alors Id va avec. –

+0

Ok le fichier est le dernier créé il écrase lui-même quand couru –

Répondre

0

Vous avez commencé avec un lecteur mappé z:, puis modifié le code pour laisser un orphelin popd et utiliser une URL, maintenant que vous utilisez deux ...

Cela devrait fonctionner:

set "sourcedir=\\machine\c$\location" 
set "destdir=\\el-1311932\c$\batch\export\exe" 
for /f "delims=" %%i in ('dir/b /a-d /od "%sourcedir%\*.csv"') do set "LatestModifiedFile=%%~nxi" 
xcopy /F /Y "%sourcedir%\%LatestModifiedFile%" "%destdir%\StockExport.csv" 
+0

A dû ajouter ces commutateurs pour la date de création (/ b/a-d/od/t :) Votre version m'a mis le bon chemin que votre version trouve par date modifiée –