Login Register
Frontpage Code library Pastebin

MoveFile()

Author: Jare
Added: 24. marraskuuta 2023 kello 22.03
Edited: 24. marraskuuta 2023 kello 22.03
Category: Tiedostot

Description

CoolBasicissa ei ole sisäänrakennettuna komentoa tiedostojen siirtämiseen, vaikka kopioimiseen onkin CopyFile. Tämä funktio siirtää tiedostoja kutsumalla Windowsin CMD.EXEä ja syöttäen sille MOVE-komennon. - Tiedostojen lisäksi osaa siirtää kansioita. - targetPath voi olla tiedostonimi (uudelleennimeäminen) tai kansio (siirto). Toki se voi sisältää molemmat, jolloin siirretään ja uudelleennimetään tiedosto samalla kertaa. - sourcePath:ssa voi käyttää jokerimerkkiä * jolloin siirretään kaikki patterniin sopivat tiedostot. Esimerkiksi MoveFile("*.txt", "toinen kansio") siirtää kaikki .txt-tiedostot toiseen kansioon. - Jos kohde on jo olemassa, funktio ei ylikirjoita tiedostoa, vaan lopettaa ohjelman virheilmoitukseen. Poikkeuksena jos kohde on kansio, silloin ei keskeytetä, vaan lähdetiedosto/-kansio siirtyy kyseiseen kansioon. - Jos lähdettä ei ole olemassa, lopetetaan ohjelma virheilmoitukseen. Poikkeuksena jos lähteessä on käytetty jokerimerkkiä *, niin silloin tarkistusta ei tehdä. Funktio palauttaa True tai False sen mukaan, havaittiinko tiedoston lopulta siirtyneen kohteeseensa. Funktio jää odottamaan siirtokomennon jälkeen, että tiedosto ilmestyy kohteeseensa, ennen kuin palauttaa suorituksen kutsujalle, jolloin varmistutaan että tiedostoa voidaan onnistuneesti jatkokäsitellä ohjelmassa. Tätä säädetään waitTime-parametrilla, joka kertoo millisekunteina, kuinka kauan maksimissaan jäädään odottamaan. Jos tiedosto ei ilmesty tänä aikana kohteeseensa, funktio palauttaa todennäköisesti False, mutta tiedosto saattaa silti ilmestyä kohteeseen myöhemmin, varsinkin jos käytettiin hyvin alhaista odotusaikaa. Odotus voidaan kytkeä kokonaan pois päältä asettamalla waitTime 0:ksi, mikä on hyödyllistä jos kaivataan nopeutta, eikä tiedostoa tarvitse jatkokäsitellä siirron jälkeen.

Code

Select all
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Function MoveFile(sourcePath$, targetPath$, waitTime=100)
	// Validate the paths.
	If InStr(sourcePath, Chr(34)) Then MakeError "MoveFile(): Source file path must n"+"ot contain double quotes: " + sourcePath
	If InStr(targetPath, Chr(34)) Then MakeError "MoveFile(): Target file path must n"+"ot contain double quotes: " + sourcePath
	
	// Check file existences.
	If Not InStr(sourcePath, "*") Then ' Skip this check For wildcard paths As FileExists() always returns False For file names containing asterisks.
		If False=FileExists(sourcePath) Then MakeError "MoveFile(): Source file does n"+"ot exist: " + sourcePath
	EndIf 
	If FileExists(targetPath) And False=IsDirectory(targetPath) Then MakeError "MoveFile(): Target file exists already: " + targetPath
	
	// Move the file.
	Execute "cmd.exe /c move " + Chr(34) + sourcePath + Chr(34) + " " + Chr(34) + targetPath + Chr(34)
	
	If waitTime Then
		// Wait Until the file can be seen in the destination.
		startTime = Timer()
		While Not FileExists(targetPath)
			If Timer() > startTime + waitTime Then Exit
			Wait 10 ' Do Not Read disk so heavily.
		Wend
	EndIf
	Return FileExists(targetPath)
EndFunction

Comments

No comments. You can be first!

Leave a comment

You must be logged in to comment.