batch bestand maken

Status
Niet open voor verdere reacties.

darkman

Gebruiker
Lid geworden
22 jul 2002
Berichten
76
hee als nieuweling binnen het scripten gebeuren heb ik even wat hulp nodig.
ik ben begonnen met een stukje script schrijven maar het verloopt niet vlekkeloos.
Hier onder staat wat ik wil bereiken. We hebben 62.580 foto's in een map staan. Deze is door mijn voorgangers nooit opgeschoond.
Ik heb uit het ERP systeem een bestand laten exporteren van alle foto's die niet meer gebruikt worden. Deze wil ik m.b.v. het onderstaand script laten verwijderen.
Het zal als volgt moeten gaan. als de onderstaande *.jpg bestanden voorkomen in de %brondir% deze dan verplaatsen naar de %doel% directory.
Dit scriptje zal ik automatisch via de windows schedular elke maand laten draaien.
Dus daarom wordt er een logfile weggeschreven.

set timest=%time:~0,8%
set timest1=%time:~0,8%

if @%timest:~0,1% == @ set timest=0^%timest:~1,7%
set T=%DATE:~4,2%%DATE:~7,2%%DATE:~10,4%^_^%timest:~0,2%^%timest:~3,2%^%timest:~6,2%

set brondir=c:\LT_brayen\591pix\
set doeldir=c:\testdir\
set logfile=c:\LT_brayen\logfile\591pixjpg.txt

Rename c:\LT_brayen\logfile\591pixjpg.txt 591pixjpg%T%.txt

if exist


"61275100001L.jpg
612751010001M.jpg
612751010001XL.jpg
1000008001.jpg
1000008002.jpg
681970100927.jpg
681970100934.jpg
681970111594.jpg
681976700896.jpg" goto :ROBOCOPY

:Robocopy
robocopy %brondir% %doeldir% *.jpg /E /R:1000000 /W:10 /log:"%logfile%"


Als dit scriptje doet met 1 bestand dan werkt het wel goed incl. mijn log bestand.
Maar gezien er 62.000 zijn wil ik dat iets makkelijker maken.

alvast mijn dank
 
Als ik het goed lees:

1) Je creeert een logfile met de naam 591pixjpgtDATUMTIJD.txt
2) Als de bestanden:

"61275100001L.jpg
612751010001M.jpg
612751010001XL.jpg
1000008001.jpg
1000008002.jpg
681970100927.jpg
681970100934.jpg
681970111594.jpg
681976700896.jpg"

Voorkomen dan wil je ze kopieren naar de doelmap c:\testdir\

Zijn die bestanden voorbeeld bestanden of daadwerklijk wat je wilt kopieren? Of heb je nog wildcards? Moet inderdaad simpeler kunnen.
 
het zijn daadwerkelijk images die verwijderd moeten worden uit de doel directory.
ik kan helaas niet met *.jpg werken omdat de andere images wel moeten blijven staan. Alleen die in het script voorkomen moeten verplaatst worden.
 
Misschien kan het beter dan dit, maar als je voor elk bestand een copy commando zet? dus

copy 61275100001L.jpg c:\testdir
copy 612751010001M.jpg c:\testdir
copy 612751010001XL.jpg c:\testdir

etc....

Je zou eventueel nog in de map waar de data naartoe gekopieerd is "dir > 591pixjpg.txt" kunnen laten uitvoeren, eventueel nog met datum en tijd. Dan zet je in je logfile een kopie van de inhoud van de map. Dan ben je er ook. Dan hoef je in ieder geval geen gebruik te maken van Robocopy wat ook weer 1 extra stap is (wel mooie tool trouwens :))

Does that make sense?

Update:

Dus dan wordt het:

c:

cd LT_brayen\591pix\

copy 61275100001L.jpg c:\testdir
copy 612751010001M.jpg c:\testdir
copy 612751010001XL.jpg c:\testdir
etc.. rest van de files

cd \

cd testdir

dir > 591pixjpg.txt (eventueel nog voorzien van datum en tijd, je snapt het wel :))
 
Laatst bewerkt:
@Error53. Dat zou inderdaad werken als je een paar bestanden zou hebben. Ik heb meet dan 1000 images die uitgezocht moeten worden uit 62.850.
Vandaar mijn if statement. Vertaald als het bestand dat hieronder is aangegeven voorkomt in deze directory dan over kopiëren naar c:\dirtest.
Als ik elke maand zo een actie moet uitvoeren en jouw voorstel gebruik dan ben ik dagen bezig elke keer een copy command te geven.
 
Heb je mijn aanvulling nog gezien?

Maar bij je if statement heb je toch aangegeven welke bestanden er juist gekopieerd moeten worden. Zijn die dan per maand variabel?

Als dat zo is, bedoel je dan dat je je bestanden selectie wilt copy pasten in je script? Dan zou je eventueel een concatenate commando (excel) kunnen gebruikt met in kolom 1 "copy", in kolom 2 komen dan al je jpg bestandsnamen en in kolom komt dan c:\testdir. Als je daar dan een macro van maakt, dan is dat ook zo gefixt.

Laat eens even weten?
 
Ja,ik heb je aanvulling gezien maar gezien de hoeveel images die ik moet controleren en daarna verplaatsen is jouw opzet niet handig. Ik zou voor elke keer een record copy moeten aangeven. Ik ben geen excel goeroe dus zou niet weten hoe dat moet. Ik wil inderdaad zoals je zegt het aantal records knippen en plakken in het script.
 
Concatenate doe je zo:

concatneta.png


Je voegt dus cel a1, b1 en c1 samen. En als je dan kolom E in je batch kopieert, dan ben je er.
 
Helaas is dit niet echt een snelle manier op deze 62.000 items te vergelijken.
Bedankt error53. Niemand anders een ander manier voor deze uitdaging
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan