Italian File.Copy che sembra tenere bloccato un file

amorosik

Expert
Licensed User
B4X:
File.Copy("","c:\file_partenza.txt","","d:\file_arrivo.txt")
File.Delete(dir_prog,"rep.bat")
File.WriteString(dir_prog,  "rep.bat", "c:\modifica_file_backup.exe " & "d:\file_arrivo.txt")

Dim shl As Shell
shl.Initialize("shl", "cmd", Array("/c", dir_prog & "\rep.bat"))
shl.Run(-1)

Sto usando il codice sopra per creare un file batch e lanciarlo in esecuzione
Dentro al batch c'e' un eseguibile il cui lavoro e' andare a modificare il file che gli viene passato come parametro in ingresso
Il file batch viene creato regolarmente, poi viene lanciato in esecuzione regolarmente, ma l'eseguibile modifica_file_backup.exe non riesce ad eseguire il proprio lavoro perche' dice

"Il processo non puo' accedere a D:\file_arrivo.txt perche' gia' in uso da un altro processo"

L'unica operazione che potrebbe bloccare il file e' la File.Copy iniziale
Ma anche dopo diversi secondi da File.Copy... ad avvio batch l'anomalia si ripresenta
Chi blocca il file D:\arrivo.txt? E come fare per sbloccarlo e consentirne la modifica?
 

MarcoRome

Expert
Licensed User
Longtime User
Per terminare il processo puoi utilizzare la seguente libreria:

Vedi le funzioni ProcessExists e ProcessClose
 

amorosik

Expert
Licensed User
Per terminare il processo puoi utilizzare la seguente libreria:


Vedi le funzioni ProcessExists e ProcessClose

In che senso?
Il processo bloccante e' il programma B4J che ha avviato il bath usando il comando shell
E' il programma che contiene il codice indicato sopra
E quello resta sempre attivo, non e' che posso spegnerlo
Bisogna capire come mai, una volta copiato il file da una parte all'altra, resta 'bloccato'
 

MarcoRome

Expert
Licensed User
Longtime User
...ma l'eseguibile modifica_file_backup.exe non riesce ad eseguire il proprio lavoro perche' dice "Il processo non puo' accedere a D:\file_arrivo.txt perche' gia' in uso da un altro processo"
 
Top