0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PicoMiteのファイル管理コマンド

Posted at

はじめに

PicoCalcはファイルを保存する場所としてRaspberry Pi Pico内のフラッシュメモリのフラッシュファイルシステム(Aドライブ)とSDカードファイルシステム(Bドライブ)の2つがある。
PicoMiteおよびWebMiteのコマンドプロンプトおよびMMBasicのプログラムからファイルやディレクトリを操作するコマンドを確認した。

ドライブ操作コマンド DRIVE

アクティブドライブの変更

アクティブドライブはDRIVE drive$コマンドで設定します。PicoMiteおよびWebMite
の起動直後はフラッシュファイルシステムのAドライブがアクティブドライブです。

DRIVEコマンドのパラメータdrive\$"A:"または"B:"、あるいは文字型変数です。
アクティブドライブをSDカードのBドライブに変更するコマンドを以下に示します。

> DRIVE "B:"
> B:
> PRINT MM.INFO$(DRIVE)
B:
  • A:、B:はDRIVE "A:"DRIVE "B:"のショートカットとして定義されています。
  • MM.INFO$(DRIVE)はアクティブドライブを返す定義済み読み取り専用変数で、値の表示にはPRINT文を使います。

ドライブAのフォーマット

フラッシュファイルシステム(Aドライブ)はDRIVE "A:/FORMATコマンドで再フォーマットできます。SDカードファイルシステム(Bドライブ)のフォーマットはできませんでした。

> FILES
A:/
   <DIR>  .
   <DIR>  ..
   <DIR>  test
19:35 28-05-2025        297  ADT7410.bas
19:23 28-05-2025          4  bootcount
3 directories, 2 files, 2195456 bytes free
> DRIVE “A:/FORMAT”
> FILES
A:/
   <DIR>  .
   <DIR>  ..
19:37 28-05-2025          4  bootcount
2 directories, 1 file, 2207744 bytes free
> DRIVE "B:/FORMAT"
Error : Syntax

ファイルbootcountはPicoMiteおよびWebMiteを起動した回数を保存しているファイルでフォーマットするとリセットされます。次のコマンドで起動回数を確認できます。

> PRINT MM.INFO(boot count)
4

アクティブドライブの表示

アクティブドライブはMM.INFO$(DRIVE)定義済み読み取り専用変数で取得できます。PRINT文を使って表示できます。

> PRINT MM.INFO$(DRIVE)
A:

アクティブドライブの空き容量取得

アクティブドライブの空き容量はMM.INFO(FREE SPACE)定義済み読み取り専用変数で取得できます。容量はバイト単位です。初回のSDカードの容量取得には少し時間がかかりました。

> PRINT MM.INFO(FREE SPACE)
 2207744
> B:
> PRINT MM.INFO(FREE SPACE)
 31629066240
> PRINT MM.INFO(FREE SPACE)/1024^3  <- GB単位に換算
 29.4568634

アクティブドライブの容量取得

アクティブドライブの容量はMM.INFO(DISK SIZE)定義済み読み取り専用変数で取得できます。容量はバイト単位です。

> PRINT MM.INFO(disk size)
 2215936
> B:
> PRINT MM.INFO(disk size)
 31669338112
> PRINT MM.INFO(disk size)^3
 29.49436951

ディレクトリ操作

PicoMiteおよびWebMiteではmacOSなどと同様にディレクトリの作成・削除、カレントディレクトリの変更コマンドが用意されています。

ディレクトリ作成コマンド MKDIR

ディレクトリ作成はMKDIR dir$コマンドを使います。パラメータdir$に作成するディレクトリの文字列あるいはティレクトリ名を格納した文字型変数を指定します。

> A:
> MKDIR "TEST
> MKDIR "test
> files
A:/
   <DIR>  .
   <DIR>  ..
   <DIR>  TEST
   <DIR>  test
(略)
> B:
> MKDIR "TEST
> MKDIR "test
Error : Access denied due to prohibited access

フラッシュファイルシステムは大文字・小文字を区別するのでディレクトリTESTが存在していてもディレクトリtestを作成できますがSDカードファイルシステムは大文字・小文字を区別しないためディレクトリTESTが存在するとディレクトリtestは作成できません。

作成するディレクトリ名を文字型変数に代入し、それをコマンドのパラメータにてディレクトリを作成できます。

> dd$="src"
> MKDIR dd$
> files
B:/
   <DIR>  firmware
   <DIR>  src
   <DIR>  TEST
(略)

アクティブドライブ以外にはディレクトリは作成できません。

> MKDIR "A:/TEST
Error : Only valid on current drive

ディレクトリの削除コマンド RMDIR

ディレクトリの削除はRMDIR dir$コマンドを使います。コマンドのパラメータdir$に削除するディレクトリ名の文字列か削除するディレクトリ名を格納した文字型変数を指定します。
削除できるのは空のディレクトリのみで、削除対象のディレクトリにファイルやディレクトリが存在する場合は削除できません。あらかじめ後述するKILLコマンドで削除するディレクトリ内のファイルを削除する必要があります。

> RMDIR "TEST"
> RMDIR "test"
Error : Dir is not empty

カレントディレクトリの変更コマンド CHDIR

カレントディレクトリの変更はCHDIR dir$コマンドを使います。コマンドのパラメータdir$に変更先のディレクトリ名の文字列か変更先のディレクトリ名を格納した文字型変数を指定します。
アクティブドライブのディレクトリTESTに変更する場合は次のように実行します。

> CHDIR "TEST"
> FILES
A:/TEST
   <DIR>  .
   <DIR>  ..
2 directories, 0 files, 2179072 bytes free

ルートディレクトリは/または\を、親ディレクトリは..を使って指定できます。

> CHDIR "TEST"
> MKDIR "/A"
> FILES "/"
A:/
   <DIR>  .
   <DIR>  ..
   <DIR>  A
   <DIR>  TEST
   <DIR>  test
(略)

カレントディレクトリ名の取得関数 CWD$

カレントディレクトリ名の取得にはCWD$関数を使います。コマンドプロンプトで表示したい場合はPRINTコマンドを使います。

> PRINT CWD$
/
> CHDIR "TEST"
> PRINT CWD$
A:/TEST

ファイル操作

ファイル一覧表示コマンド FILES

カレントディレクトリやドライブのファイルを表示するにはFILES [fspec$] [,sort]コマンドを使います。パラメータを省略した場合はカレントディレクトリのファイル一覧を表示します。

FILES
A:/
   <DIR>  .
   <DIR>  ..
   <DIR>  A
   <DIR>  TEST
   <DIR>  test
21:04 28-05-2025        297  a.bas
21:00 28-05-2025        297  ADT7410.bas
19:37 28-05-2025          4  bootcount
5 directories, 3 files, 2170880 bytes free

パラメータfspec$にはワイルドカードによるパターン指定ができます。二つ目のパラメータsortは一覧表示時の並べ替えを指定できます。
ワイルドカードは任意の一文字を示す?、任意の文字列に一致する*を使用できます。

注:FILESコマンドはコマンドプロンプトでのみ使用でき、プログラム内では使用できません。

BASICのソースファイルのみ表示

SDカードファイルシステム(Bドライブ)のルートディレクトリのBASICソースファイル(拡張子.BAS)のみを表示したい場合はfspec$パラメータにB:/*.basを指定します。実行例を示します。

> FILES "B:/*.bas"
B:/
15:41 28-05-2025        297  ADT7410.bas
19:02 27-05-2025         87  ASCIIcodeTable.bas
07:20 25-02-2025        423  bifdiag.bas
21:58 25-05-2025       1205  hat.bas
22:02 25-05-2025        624  List6-3.bas
07:22 25-02-2025        550  lorenz.bas
10:42 06-01-2025        847  mand.bas
21:13 25-05-2025        425  scr.bas
20:07 27-05-2025        133  SetFNKy.bas
0 directories, 9 files

ファイル名が4文字のBASICファイルの表示

一文字のワイルドカード?を4つ並べて任意の4文字のファイル名(????.bas)を指定します。

> FILES "B:/????.bas
B:/
10:42 06-01-2025        847  mand.bas
0 directories, 1 file

ファイル一覧の並べ替え

一覧表示時のファイル一覧の並べ替えのパラメータsortをファイル名指定に続けて指定できます。指定できるのは下記の4つです。

  • size:ファイルサイズを昇順で並べ替え
  • time:日時を降順で並べ替え
  • name:ファイル名順に並べ替え
  • type:ファイル拡張子別

BASICのソースをサイズの小さい順に表示

sizeパラメータを指定するとファイルサイズ順で一覧表示されます。実行例を示します。

> FILES "B:/*.bas", size
B:/
19:02 27-05-2025         87  ASCIIcodeTable.bas
20:07 27-05-2025        133  SetFNKy.bas
15:41 28-05-2025        297  ADT7410.bas
07:20 25-02-2025        423  bifdiag.bas
21:13 25-05-2025        425  scr.bas
07:22 25-02-2025        550  lorenz.bas
22:02 25-05-2025        624  List6-3.bas
10:42 06-01-2025        847  mand.bas
21:58 25-05-2025       1205  hat.bas
0 directories, 9 files

BASICのソースを新しい順に表示

timeパラメータを指定するとファイルのタイムスタンプの新しい順に表示されます。実行例を示します。

> FILES "B:/*.bas", time
B:/
15:41 28-05-2025        297  ADT7410.bas
20:07 27-05-2025        133  SetFNKy.bas
19:02 27-05-2025         87  ASCIIcodeTable.bas
22:02 25-05-2025        624  List6-3.bas
21:58 25-05-2025       1205  hat.bas
21:13 25-05-2025        425  scr.bas
07:22 25-02-2025        550  lorenz.bas
07:20 25-02-2025        423  bifdiag.bas
10:42 06-01-2025        847  mand.bas
0 directories, 9 files

BASICソースを名前順に表示

nameパラメータを指定すると名前順に表示されます。これはデフォルトのパラメータです。実行例を示します。

> FILES "B:/*.bas", name
B:/
15:41 28-05-2025        297  ADT7410.bas
19:02 27-05-2025         87  ASCIIcodeTable.bas
07:20 25-02-2025        423  bifdiag.bas
21:58 25-05-2025       1205  hat.bas
22:02 25-05-2025        624  List6-3.bas
07:22 25-02-2025        550  lorenz.bas
10:42 06-01-2025        847  mand.bas
21:13 25-05-2025        425  scr.bas
20:07 27-05-2025        133  SetFNKy.bas
0 directories, 9 files

SDカードファイルシステム(Bドライブ)をファイルの種別ごとに表示

typeパラメータを指定するとファイルの種別順に一覧表示されます。実行例を示します。

> FILES "B:/", type
B:/
   <DIR>  TEST
   <DIR>  src
   <DIR>  firmware
15:41 28-05-2025        297  ADT7410.bas
21:58 25-05-2025       1205  hat.bas
21:13 25-05-2025        425  scr.bas
22:02 25-05-2025        624  List6-3.bas
19:02 27-05-2025         87  ASCIIcodeTable.bas
20:07 27-05-2025        133  SetFNKy.bas
07:20 25-02-2025        423  bifdiag.bas
07:22 25-02-2025        550  lorenz.bas
10:42 06-01-2025        847  mand.bas
21:16 25-05-2025     306294  memory.bmp
00:01 01-01-2024     307254  boot.bmp
14:20 27-05-2025     307254  List6-3.bmp
12:29 13-01-2025     307254  picocalc.bmp
10:42 06-01-2025    2133632  BellLabs_Fine.mp3
10:42 06-01-2025      40976  Chessnovice_johnybot.nes
3 directories, 15 files

ファイル名の変更コマンド RENAME

ファイル名を変更するにはRENAME fromname$ AS tonane$コマンドを使います。fromname$からtoname$に名前を変更します。ファイル名は文字列、あるいは文字型変数を指定します。

以下にアクティブドライブのファイルa.basの名前をb.basに変更する例です。

> FILES "*.bas"
A:/
22:45 28-05-2025        297  a.bas
21:00 28-05-2025        297  ADT7410.ba
s
0 directories, 2 files, 2166784 bytes free
> RENAME "a.bas" AS "b.bas"
> FILES "*.bas"
A:/
21:00 28-05-2025        297  ADT7410.bas
22:45 28-05-2025        297  b.bas
0 directories, 2 files, 2166784 bytes free

ディレクトリの名前も変更できます。ディレクトリAをTEMPという名前に変更する場合は次のようにコマンドを入力します。

> RENAME "A" AS "TEMP"

名前を変更できるのはアクティブドライブ内のみです。非アクティブドライブに対しては操作できません。下記の例のように現在のドライブのみが有効である旨のメッセージが表示されます。

> RENAME "B:/a.bas" AS "B:/B.bas"
Error : Only valid on current drive

ファイルコピーコマンド COPY

ファイルをコピーするときはCOPY fromname$ TO toname$コマンドを使います。fromname$からtoname$へコピーします。ファイル名は文字列、あるいは文字型変数を指定します。

ファイルをディレクトリへコピーする場合はワイルドカードでファイル名を指定した場合のみ可能で完全なファイル名でのコピーはエラーになる。

以下はBASICのファイルをディレクトリTESTへコピーする例です。
ディレクトリのファイル一覧はディレクトリ名の末尾に/を付ける(例:TEST/)。

> COPY "*.bas" TO "TEST"
Copying ADT7410.bas
Copying a.bas
Copying b.bas
> FILES "TEST/"
A:/TEST
   <DIR>  .
   <DIR>  ..
09:17 29-05-2025        297  a.bas
09:17 29-05-2025        297  ADT7410.bas
09:17 29-05-2025        297  b.bas
2 directories, 3 files, 2154496 bytes free
> COPY "a.bas" TO "TEST"
Error : No space left on device

コピー先ディレクトリの同名のファイルが有る場合は上書きされます。

アクティブドライブ以外のドライブにファイルをコピーするときはドライブ名を含めた完全なパス名を指定する(同じ名前でコピーしたい場合もファイル名を指定する)。
以下はアクティブドライブ(Aドライブ)のファイルADT7410.basをSDカードファイルシステムのディレクトリTESTへコピーする例を示します。

> COPY "ADT7410.bas" TO "B:/TEST/ADT7410.bas"
> FILES "B:/TEST/"
B:/TEST
09:28 29-05-2025        297  ADT7410.bas
0 directories, 1 file

ファイルの削除コマンド KILL

ファイルを削除するときはKILL file$ [,all]コマンドを使います。パラメータfile$に削除したいファイル名の文字列あるいはファイル名を格納した文字型変数を指定します。

> KILL "b.bas"

ワイルドカードを使っている場合は削除するか否かの確認をしながら実行されます。

> KILL "TEST/*"
Deleting ADT7410.bas ? (Y/N) Y
Deleting a.bas ? (Y/N) Y
Deleting b.bas ? (Y/N) Y

パラメータallを指定した場合、1回だけ削除するかの確認があり、Yと回答すると連続してファイルを削除します。

> KILL "TEST/*.bas", all
Deleting *.bas from A:/TEST
Are you sure ? (Y/N) Y
Deleting ADT7410.bas
Deleting a.bas

アクティブドライブ以外のドライブのファイルを削除する場合はファイルコピーの場合と同様に完全なパス名を指定する。

> KILL "B:/src/ADT7410.bas"

参考サイトなど

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?