Toon posts:

[DOS] Nieuwste bestand uit directory kopieren

Pagina: 1
Acties:
  • 105 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik zit met het volgende probleem.

Elke maand wordt er in een bepaalde directory bv D:\test een aantal bestanden gezet.
Hiervan moet elke 1e van de maand het nieuwste bestand gekopieerd worden naar een andere directory. Dit wil ik dus volledig automatisch met een scheduled task oplossen.

Ik heb al een aantal tools geprobeerd (xxcopy16.exe / newmove.exe) maar geneen kan doen wat ik precies wil.

ik dacht zoiets als:
xcopy32.exe /d: [variabele] d:\test c:\test

en dan achter /d: een variabele opgeven die de huidige datum weergeeft.
Hebben jullie ideeen hoe ik dit kan oplossen?

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 23:24

Gonadan

Admin Beeld & Geluid, Harde Waren
Verwijderd schreef op dinsdag 02 mei 2006 @ 09:20:
Ik zit met het volgende probleem.

Elke maand wordt er in een bepaalde directory bv D:\test een aantal bestanden gezet.
Hiervan moet elke 1e van de maand het nieuwste bestand gekopieerd worden naar een andere directory. Dit wil ik dus volledig automatisch met een scheduled task oplossen.

Ik heb al een aantal tools geprobeerd (xxcopy16.exe / newmove.exe) maar geneen kan doen wat ik precies wil.

ik dacht zoiets als:
xcopy32.exe /d: [variabele] d:\test c:\test

en dan achter /d: een variabele opgeven die de huidige datum weergeeft.
Hebben jullie ideeen hoe ik dit kan oplossen?
Op deze site die ik gegoogled heb vond ik de volgende flag: /SGNO

Ik hoop dat die doet wat jij wilt :)
By popular demand by XXCOPY users, we re-engineered the new file-gathering
functions /SG and its variations which retain the original filename.

/SG same as /SGN (newest one and sorted by newness)
/SGN sorted, newest file first
/SGO sorted, oldest file first
/SGF unsorted, first come first served

/SGNO picks the newest file
/SGOO picks the oldest file
/SGFO picks the first file encountered
:)

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • gemini85
  • Registratie: Juli 2004
  • Laatst online: 20-07 14:46
/D:d-m-j Kopieert bestanden die op of na de opgegeven datum zijn
gewijzigd. Als u geen datum opgeeft, worden alleen bestanden
gekopieerd waarvan de brontijd nieuwer is dan de doeltijd.

Uit de help van xcopy, en volgens mij kan je dan wel wat verzinnen om hier een datum (date now ofzo) in laten vullen

  • ajhaverkamp
  • Registratie: November 2001
  • Laatst online: 28-07 22:36

ajhaverkamp

gewoon Arjan

Kun je niet gebruik maken van het "archive" bit?
Nieuwe bestanden krijgen automatisch dit bitje "geset". Dus als je na kopieren dit bit resetten. Kun je steeds enkel de bestanden met het "archive" bit kopieren.

Mochten alle bestanden reeds meegenomen worden in een backup, dan gaat deze truk wellicht niet werken.

PS Sorry voor het neder-engels maar het is anders niet uit te leggen

[ Voor 7% gewijzigd door ajhaverkamp op 02-05-2006 09:38 ]

This footer is intentionally left blank


  • Drareg
  • Registratie: Februari 2004
  • Laatst online: 05-06-2025
Ik denk dat het hiermee zou moeten lukken:

zet eerste de bestandsnamen in de directory op volgorde van datum in een bestand
lees het bestand uit (de laatste regel in het bestand word in de variabele laatste gezet)
kopieer bestand

dir /b /a:-d /o:d >c:\temp\test.txt
FOR /F "tokens=1,2,3*" %i in (c:\temp\test.txt) do SET LAATSTE=%i %j %k
COPY %LAATSTE%

Verwijderd

Topicstarter
Bedankt voor de snelle reacties.
Met xxcopy /sgno kopieert gewoon alle bestanden. Niet alleen de nieuwste. Vaag, want er staat toch echt dat dat zou moeten werken.

Dan onderstaande. Dit zou mijn inziens kunnen werken, maar...
hij maakt wel de c:\temp\test.txt waar mooi de laatste file de nieuwste is idd. Maar dan krijg ik een foutmelding \temp\test.txt niet verwacht op dit moment...

Onderstaand heb ik dus in een batchfile test.cmd gezet.

dir /b /a:-d /o:d >c:\temp\test.txt
FOR /F "tokens=1,2,3*" %i in (c:\temp\test.txt) do SET LAATSTE=%i %j %k
XCOPY %LAATSTE% c:\doel

  • Vaan Banaan
  • Registratie: Februari 2001
  • Niet online

Vaan Banaan

Heeft ook Apache ontdekt

Het kan korter:
FOR /F "usebackq delims=*" %A in (`DIR /B /A:-D /O:D`) DO SET laatste="%A"

Je hebt met die dir geen tokens nodig, omdat de output alleen de bestandsnaam geeft.
Die quotes rond %A zorgen ervoor dat je copy ook bij bestanden met spaties geen fouten geeft
En in een batchbestand wordt het:
FOR /F "usebackq delims=*" %%A in (`DIR /B /A:-D /O:D`) DO SET laatste="%%A"
Dubbele procenttekens dus

[ Voor 7% gewijzigd door Vaan Banaan op 02-05-2006 13:49 ]

500 "The server made a boo boo"


  • Drareg
  • Registratie: Februari 2004
  • Laatst online: 05-06-2025
Klopt;

Álhoewel niet zichtbaar voegt hij bij het copieren een 1 ertussinin.
Foutje bij het copy/paste gebeuren
bij uitvoeren:
dir /b /a:-d /o:d 1>c:\temp\test.txt
terwijl ik toch echt
dir /b /a:-d /o:d > c:\temp\test.txt

had gepaste
Het beste lijkt mij om de(het?) regel over te typen en niet te kopiëren.

Verwijderd

Topicstarter
Mijn dank is zeer groot!
Pagina: 1