1. 指定されたフォルダまたはファイルを複写します
int copy( <[folder][/wildcard]>, <folder> [," [sync]"])
int copy( <file>, <file> )
・
サイズ / 日時 が異なるファイルのみ差分コピーします
・
"sync" オプションを指定すると更に出力側にのみ存在するファイルを削除します(同期コピー)
このメッセージは標準エラーに出力します (本体のメッセージは標準出力)
・ワイルドカード判定は、
*、?、| を含む場合、
または最後が
’.’ (ファイル名規約違反のため識別子として利用) の場合にワイルドカードと判断します
・ワイルドカードは、
*→.*、?→.、.→\. に変換し、正規表現マッチします (大小文字を区別しない)
こんな指定も可能です
"[baz]*.txt|*.log"
・出力が (新規)フィオルダの場合は、"
foo/" と指定します
2. 指定されたフォルダまたはファイルを移動(リネーム)します
int move( <[folder][/wildcard]>, <folder>)
int move( <file>, <file> )
3. 指定されたフォルダまたはファイルを削除します
int remove( <folder | file [/wildcard]> [," [root]"])
・ルートフォルダを指定する場合は "root" オプションが必要です
4. 指定されたフォルダをコンパクトなツリー表示します
int tree( <folder[/wildcard]> [, " [file]"])
・"file" を指定するとファイル名を表示します
5. ファイルを一覧表示します
int ls( <folder[/wildcard]> [," [/*属性*/ 0 | , | k] [/*長いパス*/ 260 | no260] "])
・0: 編集なし、, : カンマ編集、K: 単位変換 (属性を表示するためにはいずれかを指定します)
・260: 長いパスを表示、no260: 短いパス、省略: 全て
6. 共通オプション
リダイレクト: [12]>{1,2} path
・リダイレクトは
①後続のオプションが存在する場合は、シングルクオートで囲む仕様です >'path'
これは後続の一般オプションを食ってしまうためで、
②オプションの最後に指定または、
③リダイレクトのみ単独指定でも回避できます
すなわち
"/*オプション*/ 1>foo 2>bar /*ここにオプションは書けない*/ "
・パスは、80 桁に切り詰めますが、リダイレクトの場合はそのまま出力します
リカーシブ: noRecursive
・オプションは大小文字を区別しないで前方一致で比較します (コマンド内でユニークなら良い)
"foo", "bar" では煩雑になるため "foo bar" 形式を推奨します
否定オプション noRecursive はマイナスオプション -r[ecursive] に短縮可能です
7. 復帰コード
0: 正常、1: インフォーメーション、2: ワーニング(マゼンタ)、3: エラー(赤)
・重大エラーは、throw するためあまり意味を持た持たないため、警告に使用しています
8. 外部コマンド呼び出し
int system("<command> [<args...>] [>redirect]")
9. PowerShell 呼び出し
int system("PowerShell <command> [<args...>] [>redirect]")
10. コマンドプロンプト呼び出し
int system("CMD /C <command> [<args...>] [>redirect]")
※ ソースコード: plus/io/NanoTools.java
※ シェルスクリプトの代わりに AWKスクリプト(nanoShell)で記述します
# nanoTools.awk
#
BEGIN {
remove("W:/", "root re")
remove("Z:/", "root re")
print "## コピー"
copy("./lib.zip", "W:/")
copy("lib.zip", "W:/T/")
copy("./lib.zip", "W:/lib2.zip")
copy("lib*.zip", "W:/TMP/")
ls("W:/", ", re")
tree("W:/", "file re")
print "## 移動"
remove("Z:/*.zip", "root re")
move("W:/lib.zip", "Z:/")
move("W:/T/lib.zip", "Z:/T/lib.zip")
print "# リダイレクト"
copy("X:/", "W:/", "sync re >'Z:/cp( 1).tmp' 2>'Z:/cp(\'2).tmp' ")
ls("Z:/*.tmp", "k re")
print "foo" >"Z:/timeStamp"
copy("X:/", "W:/", "sync re", ">Z:/cp( 3).tmp 2>Z:/cp(\'4).tmp")
ls("Z:/*.tmp", "k re")
move("W:/", "Z:/", "re")
ls("Z:/", "k re")
}