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 all1 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.