Gezocht programma met zekere functionaliteit.

Moderators: jkien, Xilvo

Berichten: 2.589

Gezocht programma met zekere functionaliteit.

Ik ben op zoek naar een programma met volgende functionaliteit:

Controleren of een file bestaat, nog in gebruik is en zo neen deze file copyeren en saven op een andere schijf naderhand deze file verwijderen.

Ik heb al wat proberen te zoeken maar ik heb totaal geen idee naar wat ik moet zoeken, iemand enig idee?

Groeten.

Gebruikersavatar
Berichten: 7.390

Re: Gezocht programma met zekere functionaliteit.

Dat lijkt me wel doenbaar om te schrijven in VBA. Enig vraagje om de haalbaarheid te testen: hoe wil je deze files bepalen? Enumeratie? Manueel ingeven? Alles systematisch laten controleren in een dir?
"C++ : Where friends have access to your private members." Gavin Russell Baker.

Gebruikersavatar
Berichten: 5.609

Re: Gezocht programma met zekere functionaliteit.

Bert F schreef:Ik ben op zoek naar een programma met volgende functionaliteit:

Controleren of een file bestaat, nog in gebruik is en zo neen deze file copyeren en saven op een andere schijf naderhand deze file verwijderen.

Ik heb al wat proberen te zoeken maar ik heb totaal geen idee naar wat ik moet zoeken, iemand enig idee?

Groeten.
En waarvoor wil je dat programma gebruiken? Het lijkt me dat je eigenlijk iets anders zoekt. Het is namelijk niet eenvoudig om te detecteren of een file nog in gebruik is. Niet alle programma's plaatsen "locks" op files die ze gebruiken.
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-

Berichten: 2.589

Re: Gezocht programma met zekere functionaliteit.

Dat lijkt me wel doenbaar om te schrijven in VBA. Enig vraagje om de haalbaarheid te testen: hoe wil je deze files bepalen? Enumeratie? Manueel ingeven? Alles systematisch laten controleren in een dir?
Manueel ingeven of files uit bepaalde dir.
En waarvoor wil je dat programma gebruiken? Het lijkt me dat je eigenlijk iets anders zoekt. Het is namelijk niet eenvoudig om te detecteren of een file nog in gebruik is. Niet alle programma's plaatsen "locks" op files die ze gebruiken.
Dit verklaard mss in eens alles, ik doe simulaties waarvan de bestanden erg groot worden. dit programma schrijft zijn resultaat enkel op een welbepaalde schijf, echter deze is maar zo'n 1gb groot.

De output van een simulatie is zo'n 250mb dus na vier is de schijf vol.

Het simuleren duurt ook nog eens tergend lang reken ongeveer op zo'n 5 a 6h voor eentje, waarbij er maar één van de vier procesoren gebruikt wordt als ik nu meerdere simulaties parallel run, ik heb toch vier procesoren dan is het mij al dikwils voorgekomen dat als ik 's morgens opsta (ja want die simulaties laat ik liefst 's nachts bollen) de schijf toch weer niet vol is waardoor mijn simulator gestopt is.

Daarom dat ik dacht de files te controleren en na te kijken of ze door de sim gelockt zijn of dat een andere (ook zelf in te geven) file bestaat want dan weet ik dat de vorige file afgewerkt is deze dan te copyeren en te verwijderen van de eerste schijf.

Iemand enig idee?

Groeten.

Gebruikersavatar
Berichten: 6.905

Re: Gezocht programma met zekere functionaliteit.

Op linux zou je met het terminal commando lsof periodiek kunnen kijken. Een python programma om dit te doen lijkt mij niet echt moeilijk te zijn.
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Berichten: 2.589

Re: Gezocht programma met zekere functionaliteit.

Ik was net ook al aan denken dat ik mss gemakelijker zelf iets in een kan steken dat dit kan dan achter zo’n program te zoeken.

Bvb in matlab zou ik dan nodig hebben:

1)om de zoveel tijd even aandacht (zodaning dat ik niet in een stomme oneindige while loop moet zitten)

2)indien een file bestaat (namelijk de volgende )dan weet ik dat de vorige niet meer in gebruik is lees deze vorige dan==>>

fid = fopen(filname,'r');

A=fscanf(fid,'%c',inf); %

fprintf(fidnew,A,’%c’);

3)maak nu de oorspronkelijk file gelijk aan niks:

fid = fopen(filname,'w');

fprintf(fid,0);

zoiets? Hoe regel ik dat om de zoveel kijken nog(1)?

Groeten.

Gebruikersavatar
Berichten: 5.609

Re: Gezocht programma met zekere functionaliteit.

Bvb in matlab zou ik dan nodig hebben:
Ik ben bang dat matlab zoiets niet kan... ](*,)

Ik denk niet dat matlab locks kan controleren. Grote files kopieren op de manier die je aangeeft lijkt me ook moeilijk, ik denk dat matlab dan eerst de files gaat willen volledig laden, en dat je dus met 500Mb aan overtollige ruimte op je RAM zit.

Misschien beter eens kijken naar Java, python, VB, ...
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-

Gebruikersavatar
Berichten: 5.679

Re: Gezocht programma met zekere functionaliteit.

Kan ook met een simpel .bat scriptje lijkt me:

Code: Selecteer alles

:verplaats

move c:\voorbeeld.doc d:\

if not exist d:\voorbeeld.doc goto verplaats
In theory, there's no difference between theory and practice. In practice, there is.

Berichten: 2.589

Re: Gezocht programma met zekere functionaliteit.

bij dit bat scriptje hoe zie ik dat de computer het niet nodeloos veel gaat doen? maw hoe is ingebouwd dat het niet alles van mijn procesor vraagt?

Groeten.

Berichten: 473

Re: Gezocht programma met zekere functionaliteit.

In VBA is dat zeker een makkie op voorwaarde dat je "Microsoft Scripting Runtime" gebruikt.

Via Extra\Verwijzingen "Microsoft Scripting Runtime" in de lijst zoeken en aanvinken.

Dan in code
Dim fso As FileSystemObject

Set fso = New FileSystemObject

"hier komt jouw code voorbeeld:"

If fso.FolderExists(txtP1Folder.Text) = False Then

End If

set fso = Nothing
Het object "fso" heeft een hele boel methoden zoals

BuildPath

CopyFile

CopyFolder

FileExists

MoveFile

enz

enz

enz... ...

](*,) eens FileSystemObject

Berichten: 2.589

Re: Gezocht programma met zekere functionaliteit.

oké bedankt volgend bat filtje werkt al perfect:

:verplaats

move c:\test\test.txt c:\test\test2.txt

CHOICE /C:x /T:x,300 > NUL

if not exist c:\test\test2.txt goto verplaats

nu controleert die om de 5min.

Groeten.

Gebruikersavatar
Berichten: 7.390

Re: Gezocht programma met zekere functionaliteit.

Enkele functies verzameld in VB:

Code: Selecteer alles

Function FileAlreadyOpen(FullFileName As String) As Boolean

' returns True if FullFileName is currently in use by another process

' example: If FileAlreadyOpen("C:\FolderName\FileName.xls") Then...

Dim f As Integer

	f = FreeFile

	On Error Resume Next

	Open FullFileName For Binary Access Read Write Lock Read Write As #f

	Close #f

	' If an error occurs, the document is currently open.

	If Err.Number <> 0 Then

		FileAlreadyOpen = True

		Err.Clear

		'MsgBox "Error #" & Str(Err.Number) & " - " & Err.Description

	Else

		FileAlreadyOpen = False

	End If

	On Error GoTo 0

End Function



Sub FileExists()

Dim FSO

Dim file As String

file = "C:\Test.xls" ' change to match the file w/Path

Set FSO = CreateObject("Scripting.FileSystemObject")

If Not FSO.FileExists(file) Then

	MsgBox file & " was not located.", vbInformation, "File Not Found"

Else

	MsgBox file & " has been located.", vbInformation, "File Found"

End If

End Sub



Sub CopyFile()

Dim FSO

Dim file As String, sfol As String, dfol As String

file = "test.xls" ' change to match the file name

sfol = "C:\" ' change to match the source folder path

dfol = "E:\" ' change to match the destination folder path

Set FSO = CreateObject("Scripting.FileSystemObject")

If Not FSO.FileExists(sfol & file) Then

	MsgBox sfol & file & " does not exist!", vbExclamation, "Source File Missing"

ElseIf Not FSO.FileExists(dfol & file) Then

	FSO.CopyFile (sfol & file), dfol, True

Else

	MsgBox dfol & file & " already exists!", vbExclamation, "Destination File Exists"

End If

End Sub



Sub MoveFile()

Dim FSO

Dim file As String, sfol As String, dfol As String

file = "test.xls" ' change to match the file name

sfol = "C:\" ' change to match the source folder path

dfol = "E:\" ' change to match the destination folder path

Set FSO = CreateObject("Scripting.FileSystemObject")

If Not FSO.FileExists(sfol & file) Then

	MsgBox sfol & file & " does not exist!", vbExclamation, "Source File Missing"

ElseIf Not FSO.FileExists(dfol & file) Then

	FSO.MoveFile (sfol & file), dfol

Else

	MsgBox dfol & file & " already exists!", vbExclamation, "Destination File Exists"

End If

End Sub



Sub DeleteFile()

Dim FSO

Dim file As String

file = "C:\test.xls" ' change to match the file w/Path

Set FSO = CreateObject("Scripting.FileSystemObject")

If FSO.FileExists(file) Then

	FSO.DeleteFile file, True

Else

	MsgBox file & " does not exist or has already been deleted!" _

			, vbExclamation, "File not Found"

End If

End Sub

Sub MoveSomeFiles()



Dim FSO As Object

	Dim FromPath As String

	Dim ToPath As String

	Dim Fdate As Date

	Dim FileInFromFolder As Object



For Each FileInFromFolder In FSO.getfolder(FromPath).Files

		Fdate = Int(FileInFromFolder.DateLastModified)

		'Copy files from 1-Oct-2006 to 1-Nov-2006

		If Fdate >= DateSerial(2006, 10, 1) And Fdate <= DateSerial(2006, 11, 1) Then

			FileInFromFolder.Copy ToPath

		End If

	Next FileInFromFolder



End Sub


Puzzel ze zelf maar in elkaar en je kan ermee maken wat je wil denk ik.
"C++ : Where friends have access to your private members." Gavin Russell Baker.

Berichten: 473

Re: Gezocht programma met zekere functionaliteit.

@In fysics I trust :

Ik mis maar één iets in jouw code en dat is het verwijderen van de referentie naar de objecten "FSO" met de instructie "set FSO = nothing"

Door dat niet te doen krijg je memory leaks omdat het geheugen gebruikt door FSO niet vrijgegevn wordt op het einde van elke routine.

Gebruikersavatar
Berichten: 7.390

Re: Gezocht programma met zekere functionaliteit.

Inderdaad, had ik over het hoofd gezien. Je hebt gelijk!
"C++ : Where friends have access to your private members." Gavin Russell Baker.

Berichten: 2.589

Re: Gezocht programma met zekere functionaliteit.

je Visual Basic zal zeker wel werken hoor. maar ik heb daar nog nooit mee geprogrammeerd en heb daar ook niet direct een compiler voor.

En het bat programma werkt nu onmiddellijk dus voorlopig kan ik daar mee door.

Groeten.

Reageer