Ik heb een best gecompliceerd probleem:
Via een batch FTP script haal ik files op uit een directory, en deze worden daarna ook daaruit verwijderd.
Deze files verplaats ik dan naar een map 'C:\verwerken'.
Vervolgens pakt een conversieprogje ze op, verwerkt de files en zet ze in 'C:\verwerken\old'.
Tot nu toe geen probleem.
Echter gaat er bij het ftp-en sporadisch wel eens iets mis, waardoor de bestanden na ophalen niet van de FTP verwijderd worden.
Daardoor wordt de volgende keer hetzelfde bestand nog een keer opgehaald en verwerkt.
Heb ik dus allemaal dubbele records in mijn database.
Nu wil ik dus simpelweg vóórdat de kopieerslag naar C:\verwerken plaatsvindt, controleren of er niet al een bestand met dezelfde naam bestaat in de map C:\verwerken\old.
Ik heb al gekeken naar XCOPY en ROBOCOPY, en die kunnen wel zorgen dat bestaande bestanden niet overschreven worden, maar niet uit een andere map.
Vervolgens ben ik aan het batchen geslagen met FOR:
tot zoveer eerst maar eens dacht ik, dan kan ik later via een IF wel een check inbouwen.
Maar wat ik ook doe ik krijg iets dergelijks niet aan de praat.
Wat doe ik fout?
[using XP PRO SP2]
Via een batch FTP script haal ik files op uit een directory, en deze worden daarna ook daaruit verwijderd.
Deze files verplaats ik dan naar een map 'C:\verwerken'.
Vervolgens pakt een conversieprogje ze op, verwerkt de files en zet ze in 'C:\verwerken\old'.
Tot nu toe geen probleem.
Echter gaat er bij het ftp-en sporadisch wel eens iets mis, waardoor de bestanden na ophalen niet van de FTP verwijderd worden.
Daardoor wordt de volgende keer hetzelfde bestand nog een keer opgehaald en verwerkt.
Heb ik dus allemaal dubbele records in mijn database.
Nu wil ik dus simpelweg vóórdat de kopieerslag naar C:\verwerken plaatsvindt, controleren of er niet al een bestand met dezelfde naam bestaat in de map C:\verwerken\old.
Ik heb al gekeken naar XCOPY en ROBOCOPY, en die kunnen wel zorgen dat bestaande bestanden niet overschreven worden, maar niet uit een andere map.
Vervolgens ben ik aan het batchen geslagen met FOR:
code:
1
2
| FOR /F "usebackq" %I in (`dir /B`) DO @echo %I pause |
tot zoveer eerst maar eens dacht ik, dan kan ik later via een IF wel een check inbouwen.
Maar wat ik ook doe ik krijg iets dergelijks niet aan de praat.
Wat doe ik fout?
[using XP PRO SP2]
[ Voor 5% gewijzigd door tim-w op 05-07-2005 12:59 . Reden: spatietje ]
But Seriously...