2011年3月10日木曜日

Visual C++の使い方メモ

コンピューター・プログラムを作る(新着順)
o C++サウンドプログラミング
▼C++サウンドプログラミング

o C/C++標準仕様対応
Visual C++で普通のコンソールアプリケーションを作る方法
拡張子が.cのファイルを追加する方法
C/C++標準ライブラリを正しく使う時に、非推奨警告を出さない方法
_tmain関数の代わりに main関数を使う方法

o その他の便利設定
UNIXの(POSIX準拠)プログラムをビルドする時に、なるべく警告やエラーを出さない方法
Visual C++の文字セット設定を、マルチバイト文字セットにする方法
新規作成したプロジェクトからstdafx.hを完全に外す方法

o ランタイム不要化
Win32コンソールアプリケーションをランタイム不要にする方法

o 入手とインストール = Visual C#と同じです。
Visual C# 2010 ExpressをDVDドライブ無しでオフラインインストールする
Visual C# 2010 Expressを製品登録する
Visual C# 2010 Expressにアップデータを適用する
----
o 簡単な制作補助プログラムを書いてる時に覚えた小技です。

Visual C++は、次のようなツールを作る時に便利です。無料版(= Express Edition)もあります。
o なるべく多くのコンピューターで動くプログラムを作りたい時(= システム毎にビルドします。)
o 複雑なプログラムを、ファイルを1つ置くだけで動くようにしたい時
o 常に高速で動くプログラムを書きたい時(= 作る人の腕次第です。)
o 作曲ツールのプラグインを作る時


**** 新着
o 2011年5月4日水曜日 Visual C++で普通のコンソールアプリケーションを作る方法


==
関連ページ:
    ▼コンピューター・プログラムを作る
    ▼制作メモ
    ▼目次
    ▼Visual C#
    ▽Visual Studioのニュース(外部サイトに移動します。)

UNIXの(POSIX準拠)プログラムをビルドする時に、なるべく警告やエラーを出さない方法

Visual C++
○2010 Express
Visual C++では、UNIXの(POSIX準拠)プログラムのビルドを、ある程度サポートしています。
標準の状態では警告やエラーが出ますが、互換性のある機能に関しては、警告やエラーを出さないようにする事も出来ます。


**** 手順
o 標準ライブラリのヘッダーファイルがインクルードされる前に、次のようなコードを入れます。
--------
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_NONSTDC_NO_WARNINGS
#define _USE_MATH_DEFINES
--------

    + 他にもあるかもしれません。発見しましたら、この欄に追加します。

o それぞれの定数の意味は
    + _CRT_SECURE_NO_WARNINGS = 標準ライブラリにある非推奨機能について、警告を出しません
    + _CRT_NONSTDC_NO_WARNINGS = ISO標準では無い機能について、非推奨の警告を出しません
    + _USE_MATH_DEFINES = ISO標準では無い数値計算用定数の定義を、無効にしません
    + 「非推奨」の意味は、「マイクロソフト社が非推奨と判断したもの」です。
    + 詳しくは、下にある参考資料をご覧下さい。

o おすすめの書き方は、3通りあります。
    + 詳しくは、「C/C++標準ライブラリを正しく使う時に、非推奨警告を出さない方法


**** 参考資料
▽CRT のセキュリティ機能(MSDNライブラリ)


**** 確認したバージョン
o Microsoft Visual C++ 2010 Express


==
関連ページ:
    ▼Visual C++
    ▼コンピューター・プログラムを作る
    ▼制作メモ
    ▼目次
    > Visual C++の文字セット設定を、マルチバイト文字セットにする方法
    新規作成したプロジェクトからstdafx.hを完全に外す方法
    Win32コンソールアプリケーションをランタイム不要にする方法

C/C++標準ライブラリを正しく使う時に、非推奨警告を出さない方法 - Visual C++

Visual C++
○2010 Express
Visual C++では、C/C++標準ライブラリを正しく使っていても、警告が出る事があります。
理由は、セキュリティを強化する目的で、標準ライブラリの一部の機能を非推奨にしているからです。
この警告は、出さないようにする事も出来ます。


**** 手順
o 標準ライブラリのヘッダーファイルがインクルードされる前に、次のようなコードを入れます。
--------
#define _CRT_SECURE_NO_WARNINGS
--------


o おすすめの書き方は、2通り(= プロジェクトで設定する方法も加えると、3通り)あります。
    + ソースコードの先頭で、#include の行が始まる前に記述します。
        + ソースファイルが1つしかない時は、こちらの書き方が便利です。
    + もしくは、次のように書きます。
        + ソースコードの先頭では、最初に特定のヘッダーファイルを #includeします。
        + 呼ばれたヘッダーファイルの中で、#include の行が始まる前に記述します。
o この他に、プロジェクトの設定で、定数を定義する方法もあります。

o Visual C++ が自動生成するサンプルコードのまま場合、stdafx.hの中の「#pragma once」行の下辺りに書くのが良さそうです。
    + 全てのソースファイルの先頭で、stdafx.hをインクルードしていました。


**** メモ
o 警告を出さないようにすると、次のような時に便利です。
    + Visual C++を使って、C言語やC++の標準の書き方を勉強している時
    + 他のシステムでも動作するように、汎用的なソースコードを書いている時
o 反対に、この警告を利用して、セキュリティが弱くなり易い所を検証する使い方も出来ます。
o UNIX用のプログラムを Windowsでも動かしたい時は、POSIX用マクロも有効にすると、ビルドの際の手作業が減ります。
    + 詳しくは、「UNIXの(POSIX準拠)プログラムをビルドする時に、なるべく警告やエラーを出さない方法


**** 参考資料
▽CRT のセキュリティ機能(MSDNライブラリ)


**** 確認したバージョン
o Microsoft Visual C++ 2010 Express


==
関連ページ:
    ▼Visual C++
    ▼コンピューター・プログラムを作る
    ▼制作メモ
    ▼目次
    > _tmain関数の代わりに main関数を使う方法
    UNIXの(POSIX準拠)プログラムをビルドする時に、なるべく警告やエラーを出さない方法
    Visual C++の文字セット設定を、マルチバイト文字セットにする方法

Win32コンソールアプリケーションをランタイム不要にする方法 - Visual C++

Visual C++
○2010 Express
コンソール アプリケーションは、自動処理を行う時に便利です。
そして、C++の標準ライブラリだけを使って作っている場合は、ランタイムライブラリ(= DLLファイル)を不要にする事が出来ます。

o Visual C++ 2010 Expressで確認しました。
o 「Win32 プロジェクト」でランタイムライブラリを不要にする手順も、同様です。
o ランタイムライブラリを不要にする事には、長所と短所があります。詳しくは、下のメモ欄をどうぞ。


**** 手順
o 以下、プロジェクトを作る時に「Win32 コンソール アプリケーション」を選んだ時の手順です。

o プロジェクトを開きます。
o 左に出てくる「ソリューションエクスプローラー」画面で、プロジェクト名を右クリックします。
o 選択肢が出てきますので、一番下にある「プロパティ(R)」
o 設定画面が出てきますので、次のように操作します。
    + 左上にある「構成(C)」の選択欄を、完成時に選択するものに合わせます。
        + 通常は「Release」かと思います。
    + 左側のメニューから「構成プロパティ」-「C/C++」-「コード生成」
    + 右側の大きな欄で、「ランタイム ライブラリ」の文字をクリックします。
    + その行の一番右に表示される、「V」字の印をクリックします。
    + 「マルチスレッド (/MT)」を選択します。
    + そして、設定画面の右下にある「OK」ボタンを押します。


**** メモ
o ランタイムライブラリ(= DLLファイル)を不要にすると、実行ファイル本体のサイズが大きくなります。
    + 10KBの実行ファイルが、50KBくらいになりました。
    + その代わり、ランタイムライブラリの再配布が不要になる利点もあります。

** ランタイムライブラリ(= DLLファイル)不要化の是非について
o ランタイムライブラリを不要にした時の長所
    + Windows Updateでランタイムライブラリが入れ替わっても、プログラムの動きが変わる危険がありません。
    + ランタイムライブラリをアンインストールされても、プログラムは動きます。
    + プログラムを配布している時、インストール時間と手間を減らす事が出来ます。

o ランタイムライブラリを不要にした時の短所
    + Windows Updateでランタイムが改善された時、プログラムに反映されません。
        + この場合、再ビルドしたプログラムを使わないと改善されません。
    + プログラムを配布している時、修正プログラムを配布する手間がかかります。


**** 確認したバージョン
o Microsoft Visual C++ 2010 Express


==
関連ページ:
    ▼Visual C++
    ▼コンピューター・プログラムを作る
    ▼制作メモ
    ▼目次
    C/C++標準ライブラリを正しく使う時に、非推奨警告を出さない
    UNIXの(POSIX準拠)プログラムをビルドする時に、なるべく警告やエラーを出さない
(2011年5月4日変更。ランタイムライブラリの名称統一。メモ欄の長所訂正 = プログラムの動きが変わる危険が無い)

2011年3月9日水曜日

8190文字 = バッチファイルや画面の1行に入る最大文字数 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。制御文と環境変数
○Windows XP
Windows XPの場合、半角文字で、約 8 KB = 8190文字入力する事が出来ました。
ですので、通常は、「コマンドが長過ぎて、途中で切れてしまうかもしれません。」などと心配する必要はありません。

o バッチファイルとコマンドプロンプト画面の両方で、同じ結果になりました。
o 実際には、改行コードが 2バイト分入って、8KB = 8192バイトになります。


**** 確認した環境
o Windows XP Service Pack 3 ( 32ビット版 )
o コードページ 932 (= Windowsの Shift-JIS)
o SET コマンド(途中で改行しているように見えますが、実際には1行です。)
    + SET コマンドの詳細は、「SET = 環境変数を表示、設定、削除する。もしくは数値計算する


**** 確認したコマンド(= 1行です)
--------
set /a A=0,A1=1,A2=2,A3=3,A4=4,A5=5,A6=6,A7=7,A8=8,A9=9,A10=10,A11=11,A12=12,A13=13,A14=14,A15=15,A16=16,A17=17,A18=18,A19=19,A20=20,A21=21,A22=22,A23=23,A24=24,A25=25,A26=26,A27=27,A28=28,A29=29,A30=30,A31=31,A32=32,A33=33,A34=34,A35=35,A36=36,A37=37,A38=38,A39=39,A40=40,A41=41,A42=42,A43=43,A44=44,A45=45,A46=46,A47=47,A48=48,A49=49,A50=50,A51=51,A52=52,A53=53,A54=54,A55=55,A56=56,A57=57,A58=58,A59=59,A60=60,A61=61,A62=62,A63=63,A64=64,A65=65,A66=66,A67=67,A68=68,A69=69,A70=70,A71=71,A72=72,A73=73,A74=74,A75=75,A76=76,A77=77,A78=78,A79=79,A80=80,A81=81,A82=82,A83=83,A84=84,A85=85,A86=86,A87=87,A88=88,A89=89,A90=90,A91=91,A92=92,A93=93,A94=94,A95=95,A96=96,A97=97,A98=98,A99=99,A100=100,A101=101,A102=102,A103=103,A104=104,A105=105,A106=106,A107=107,A108=108,A109=109,A110=110,A111=111,A112=112,A113=113,A114=114,A115=115,A116=116,A117=117,A118=118,A119=119,A120=120,A121=121,A122=122,A123=123,A124=124,A125=125,A126=126,A127=127,A128=128,A129=129,A130=130,A131=131,A132=132,A133=133,A134=134,A135=135,A136=136,A137=137,A138=138,A139=139,A140=140,A141=141,A142=142,A143=143,A144=144,A145=145,A146=146,A147=147,A148=148,A149=149,A150=150,A151=151,A152=152,A153=153,A154=154,A155=155,A156=156,A157=157,A158=158,A159=159,A160=160,A161=161,A162=162,A163=163,A164=164,A165=165,A166=166,A167=167,A168=168,A169=169,A170=170,A171=171,A172=172,A173=173,A174=174,A175=175,A176=176,A177=177,A178=178,A179=179,A180=180,A181=181,A182=182,A183=183,A184=184,A185=185,A186=186,A187=187,A188=188,A189=189,A190=190,A191=191,A192=192,A193=193,A194=194,A195=195,A196=196,A197=197,A198=198,A199=199,A200=200,A201=201,A202=202,A203=203,A204=204,A205=205,A206=206,A207=207,A208=208,A209=209,A210=210,A211=211,A212=212,A213=213,A214=214,A215=215,A216=216,A217=217,A218=218,A219=219,A220=220,A221=221,A222=222,A223=223,A224=224,A225=225,A226=226,A227=227,A228=228,A229=229,A230=230,A231=231,A232=232,A233=233,A234=234,A235=235,A236=236,A237=237,A238=238,A239=239,A240=240,A241=241,A242=242,A243=243,A244=244,A245=245,A246=246,A247=247,A248=248,A249=249,A250=250,A251=251,A252=252,A253=253,A254=254,A255=255,A256=256,A257=257,A258=258,A259=259,A260=260,A261=261,A262=262,A263=263,A264=264,A265=265,A266=266,A267=267,A268=268,A269=269,A270=270,A271=271,A272=272,A273=273,A274=274,A275=275,A276=276,A277=277,A278=278,A279=279,A280=280,A281=281,A282=282,A283=283,A284=284,A285=285,A286=286,A287=287,A288=288,A289=289,A290=290,A291=291,A292=292,A293=293,A294=294,A295=295,A296=296,A297=297,A298=298,A299=299,A300=300,A301=301,A302=302,A303=303,A304=304,A305=305,A306=306,A307=307,A308=308,A309=309,A310=310,A311=311,A312=312,A313=313,A314=314,A315=315,A316=316,A317=317,A318=318,A319=319,A320=320,A321=321,A322=322,A323=323,A324=324,A325=325,A326=326,A327=327,A328=328,A329=329,A330=330,A331=331,A332=332,A333=333,A334=334,A335=335,A336=336,A337=337,A338=338,A339=339,A340=340,A341=341,A342=342,A343=343,A344=344,A345=345,A346=346,A347=347,A348=348,A349=349,A350=350,A351=351,A352=352,A353=353,A354=354,A355=355,A356=356,A357=357,A358=358,A359=359,A360=360,A361=361,A362=362,A363=363,A364=364,A365=365,A366=366,A367=367,A368=368,A369=369,A370=370,A371=371,A372=372,A373=373,A374=374,A375=375,A376=376,A377=377,A378=378,A379=379,A380=380,A381=381,A382=382,A383=383,A384=384,A385=385,A386=386,A387=387,A388=388,A389=389,A390=390,A391=391,A392=392,A393=393,A394=394,A395=395,A396=396,A397=397,A398=398,A399=399,A400=400,A401=401,A402=402,A403=403,A404=404,A405=405,A406=406,A407=407,A408=408,A409=409,A410=410,A411=411,A412=412,A413=413,A414=414,A415=415,A416=416,A417=417,A418=418,A419=419,A420=420,A421=421,A422=422,A423=423,A424=424,A425=425,A426=426,A427=427,A428=428,A429=429,A430=430,A431=431,A432=432,A433=433,A434=434,A435=435,A436=436,A437=437,A438=438,A439=439,A440=440,A441=441,A442=442,A443=443,A444=444,A445=445,A446=446,A447=447,A448=448,A449=449,A450=450,A451=451,A452=452,A453=453,A454=454,A455=455,A456=456,A457=457,A458=458,A459=459,A460=460,A461=461,A462=462,A463=463,A464=464,A465=465,A466=466,A467=467,A468=468,A469=469,A470=470,A471=471,A472=472,A473=473,A474=474,A475=475,A476=476,A477=477,A478=478,A479=479,A480=480,A481=481,A482=482,A483=483,A484=484,A485=485,A486=486,A487=487,A488=488,A489=489,A490=490,A491=491,A492=492,A493=493,A494=494,A495=495,A496=496,A497=497,A498=498,A499=499,A500=500,A501=501,A502=502,A503=503,A504=504,A505=505,A506=506,A507=507,A508=508,A509=509,A510=510,A511=511,A512=512,A513=513,A514=514,A515=515,A516=516,A517=517,A518=518,A519=519,A520=520,A521=521,A522=522,A523=523,A524=524,A525=525,A526=526,A527=527,A528=528,A529=529,A530=530,A531=531,A532=532,A533=533,A534=534,A535=535,A536=536,A537=537,A538=538,A539=539,A540=540,A541=541,A542=542,A543=543,A544=544,A545=545,A546=546,A547=547,A548=548,A549=549,A550=550,A551=551,A552=552,A553=553,A554=554,A555=555,A556=556,A557=557,A558=558,A559=559,A560=560,A561=561,A562=562,A563=563,A564=564,A565=565,A566=566,A567=567,A568=568,A569=569,A570=570,A571=571,A572=572,A573=573,A574=574,A575=575,A576=576,A577=577,A578=578,A579=579,A580=580,A581=581,A582=582,A583=583,A584=584,A585=585,A586=586,A587=587,A588=588,A589=589,A590=590,A591=591,A592=592,A593=593,A594=594,A595=595,A596=596,A597=597,A598=598,A599=599,A600=600,A601=601,A602=602,A603=603,A604=604,A605=605,A606=606,A607=607,A608=608,A609=609,A610=610,A611=611,A612=612,A613=613,A614=614,A615=615,A616=616,A617=617,A618=618,A619=619,A620=620,A621=621,A622=622,A623=623,A624=624,A625=625,A626=626,A627=627,A628=628,A629=629,A630=630,A631=631,A632=632,A633=633,A634=634,A635=635,A636=636,A637=637,A638=638,A639=639,A640=640,A641=641,A642=642,A643=643,A644=644,A645=645,A646=646,A647=647,A648=648,A649=649,A650=650,A651=651,A652=652,A653=653,A654=654,A655=655,A656=656,A657=657,A658=658,A659=659,A660=660,A661=661,A662=662,A663=663,A664=664,A665=665,A666=666,A667=667,A668=668,A669=669,A670=670,A671=671,A672=672,A673=673,A674=674,A675=675,A676=676,A677=677,A678=678,A679=679,A680=680,A681=681,A682=682,A683=683,A684=684,A685=685,A686=686,A687=687,A688=688,A689=689,A690=690,A691=691,A692=692,A693=693,A694=694,A695=695,A696=696,A697=697,A698=698,A699=699,A700=700,A701=701,A702=702,A703=703,A704=704,A705=705,A706=706,A707=707,A708=708,A709=709,A710=710,A711=711,A712=712,A713=713,A714=714,A715=715,A716=716,A717=717,A718=718,A719=719,A720=720,A721=721,A722=722,A723=723,A724=724,A725=725,A726=726,A727=727,A728=728,A729=729,A730=730,A731=731,A732=732,A733=733,A734=734,A735=735,A736=736,A737=737,A738=738,A739=739,A740=740,A741=741,A742=742,A743=743,A744=744,A745=745,A746=746,A747=747,A748=748,A749=749,A750=750,A751=751,A752=752,A753=753,A754=754,A755=755,A756=756,A757=757,A758=758,A759=759,A760=760,A761=761,A762=762,A763=763,A764=764,A765=765,A766=766,A767=767,A768=768,A769=769,A770=770,A771=771,A772=772,A773=773,A774=774,A775=775,A776=776,A777=777,A778=778,A779=779,A780=780,A781=781,A782=782,A783=783,A784=784,A785=785,A786=786,A787=787,A788=788,A789=789,A790=790,A791=791,A792=792,A793=793,A794=794,A795=795,A796=796,A797=797,A798=798,A799=799,A800=800,A801=801,A802=802,A803=803,A804=804,A805=805,A806=806,A807=807,A808=808,A809=809,A810=810,A811=811,A812=812,A813=813,A814=814,A815=815,A816=816,A817=817,A818=818,A819=819,A820=820,A821=821,A822=822,A823=823,A824=824,A825=825,A826=826,A827=827,A828=828,A829=829,A830=830,A831=831,A832=832,A833=833,A834=834,A835=835,A836=836,A837=837,A838=838,A839=839,A840=840,A841=841,A842=842,A843=843,A844=844,A845=845,A846=846,A847=847,A848=848,A849=849,A850=850,A851=851,A852=852,A853=853,A854=854,A855=855,A856=856,A857=857,A858=858,A859=859,A860=860,A861=861,A862=862,A863=863,A864=864,A865=865,A866=866,A867=867,A868=868,A869=869,A870=870,A871=871,A872=872,A873=873,A874=874,A875=875,A876=876,A877=877,A878=878,A879=879,A880=880,A881=881,A882=882,A883=883,A884=884,A885=885,A886=886,A887=887,A888=888,A889=889,A890=890,A891=891,A892=892,A893=893,A894=894,A895=895,A896=896,A897=897,A898=898,A899=899,A900=900,A901=901,A902=902,A903=903,A904=904,A905=905,A906=906,A907=907,A908=908,A909=909,A910=910,A911=911,A912=912,A913=913,A914=914,A915=915,A916=916,A917=917,A918=918,A919=919,A920=920,A921=921,A922=922,A923=923,A924=924,A925=925,A926=926,A927=927,A928=928,A929=929,A930=930,A931=931,A932=932,A933=33
--------



**** メモ
o この後に改行して、
--------
set a
pause
--------

と入れると、Aから始まる環境変数の内容(の一部を)を確認する事が出来ます。

o 検証したい時は、リダイレクトします。
--------
set a > out.txt
out.txt
--------

    + カレントディレクトリに out.txtがあると、上書きしますのでご注意下さい。


** 未検証情報
o 全角文字については、バイト数ではなくて、文字数で制限がかかるみたいです。
    + 変数名の「A」を「あ」に書き換えて試した所、全角文字が入っていても8190文字貼り付ける事が出来ました。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。制御文と環境変数▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > バッチファイルでif文の条件式を書く時の注意点
    バッチファイル。IF文やFOR文の中で複数コマンドを書く時の注意点
    %変数の使い方

2011年3月8日火曜日

%変数の使い方 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。制御文と環境変数
○Windows XP
%1などの引数や、FORコマンドで使う%変数は、呼び出された先だけで、一時的に使う事が出来ます。
これらの変数を使う時は、ファイル操作に関する便利な書式を利用する事が出来ます。

o 環境変数と%変数は、得意分野が異なります。
    + 環境変数を使うと、文字の置換や一部分の取り出しが簡単に出来ます。
    + %変数を使うと、ファイルのサイズや拡張子などを、簡単に取得する事が出来ます。
o なお、%変数 の正しい呼び方は「変数」です。
    + 環境変数と区別する為に、このメモでは呼び方を変えてみました。


**** 書式
--------
画面に直接書く時や引数(= %1など)は
%[[~]オプション]変数名
バッチファイルに書くFORの変数は
%%[[~]オプション]変数名
--------

o この時の変数名は、大文字小文字を区別「します」。
o % = 変数名の先頭に付けます。
    + バッチファイルに書くFORの変数は、%% と書きます。
o ~ = チルダです。書式オプションを指定する時に使います。
    + 前後に空白を入れません。
    + 「Shift」キーを押しながら、「0」キーの2つ右のへの字のキーを押します。
o オプション = 書式オプションです。複数指定する事も出来ます。
    + 前後に空白を入れません。
    + 使用出来る書式オプションは、下記の通りです。
o 変数名 = 1文字です。大文字小文字を区別「します」。

%変数の書式オプションの概要
記号意味結果例
オプションの意味
~ (チルダ)「"」を除去します(%の直後に付けます)
dドライブ名C:
p途中のパス部分\ミクさん\
nファイル名部分強いネギの作り方
x拡張子.txt
fフルパスC:\ミクさん\強いネギの作り方.txt
$環境変数名:フルパス(環境変数に書いたパスも検索します)
s8.3形式フルパスC:\ミクさん\強いネ~1.TXT
aファイルの属性-rahsc---
tファイルの最終更新日時2011/03/09 20:39
zファイルサイズ393
組み合わせ例
~dp親フォルダー。最後に\C:\ミクさん\
~nx拡張子付きのファイル名強いネギの作り方.txt


**** 書式オプションについて
o 書式オプションは複数並べる事も出来ます。
o 複数並べる方法については、後で記します。

--------
%変数名
--------

o %a (オプション無し)= 変数 %a の、そのままの値です。

** ファイル名の取り出しに便利なオプション(~fdpnxs$)
--------
%~変数名
--------

o %~a = 文字列 %a から「"」(= 二重引用符)を削除した文字列です。
    + 文字列の途中にある「"」も除去します。
    + 以下、%~ から始まる名前は、全てこの機能を含みます。

--------
%~d変数名
--------

o d = ドライブ文字部分です。(「C:」)
    + %~da = 文字列 %a をファイルとみなして、ドライブ文字部分を取得します。
    + ファイルの存在確認はしません。
    + パス部分を書いていない時、カレントディレクトリ上にファイルがあるものと解釈します。

--------
%~p変数名
--------

o p = ドライブ文字部分を除いたパス部分です。(「\ミクさん\」)
    + %~pa = 文字列 %a をファイルとみなして、パス部分を取得します。
    + ファイルの存在確認はしません。
    + パス部分を書いていない時、カレントディレクトリ上にファイルがあるものと解釈します。

--------
%~n変数名
--------

o n = 拡張子を除いたファイル名部分です。(「強いネギの作り方」)
    + %~na = 文字列 %a をファイルとみなして、ファイル名部分を取得します。
    + ファイルの存在確認はしません。

--------
%~x変数名
--------

o x = ファイル拡張子です。(「.txt」)
    + %~xa = 文字列 %a をファイルとみなして、拡張子を取得します。
    + ファイルの存在確認はしません。

--------
%~f変数名
--------

o f = フルパスです。(「C:\ミクさん\強いネギの作り方.txt」)
    + %~fa = 文字列 %a をファイルとみなして、フルパスを取得します。
    + ファイルの存在確認はしません。
    + パス部分を書いていない時、カレントディレクトリ上にファイルがあるものと解釈します。

--------
%~$環境変数名:変数名
--------

o $と: = フルパスです。この時、環境変数(= セミコロン区切り)からパスを検索します。
    + %~$PATH:a = 文字列 %a をファイルとみなして、フルパスを取得します。
    + 実行ファイルの検索動作とは異なり、カレントディレクトリは検索しません。
    + 次の条件を全て満たす時、指定した環境変数に無いパスも検索します。
        + 存在するファイルをフルパスで指定する
        + かつ、環境変数に、何か値が入っている
    + 指定した環境変数が定義されていない時は、常に空 = 0文字です。

--------
%~s変数名
--------

o s = 8.3形式フルパス = DOS時代からある短いファイル名です。(「C:\ミクさん\強いネ~1.TXT」)
    + %~sa = 文字列 %a をファイルとみなして、8.3形式フルパスを取得します。
    + ファイルが存在しない時は、ファイル名を短くしません。
    + パス部分を書いていない時、カレントディレクトリ上にファイルがあるものと解釈します。

** ファイル情報の取り出し用オプション(~atz)
--------
%~a変数名
--------

o a = ファイルの属性です。(「-rahsc---」)
    + %~aa = 文字列 %a をファイルとみなして、ファイルの属性を取得します。
    + 読み取り専用属性などの有無を、文字列の形で確認出来ます。
        + r = 読み取り専用属性
        + a = アーカイブ属性
        + h = 隠しファイル属性
        + s = システムファイル属性
        + c = 圧縮済み
        + 表示領域は9個分ありますので、他にも表示出来る属性があるかもしれません。
    + ファイルが存在しない時、空 = 0文字です。
    + 後ろに他の属性が並ぶ時、間に空白文字が1つ入ります。
    + ATTRIB コマンドよりも、取得出来るファイル属性が多いです。。。

--------
%~t変数名
--------

o t = ファイルの最終更新日時です。(「2011/03/09 20:39」)
    + %~ta = 文字列 %a をファイルとみなして、ファイルの最終更新日時を取得します。
    + ファイルが存在しない時、空 = 0文字です。
    + 後ろに他の属性が並ぶ時、間に空白文字が1つ入ります。

--------
%~z変数名
--------

o z = ファイルサイズです。(「393」)
    + %~za = 文字列 %a をファイルとみなして、ファイルサイズを取得します。
    + 少なくとも、4GB余りのバイト数(5,000,003,584バイト)は、正しく取得する事が出来ました。
    + 後ろに他の属性が並ぶ時、間に空白文字が1つ入ります。
    + ファイルが存在しない時、空 = 0文字です。

** 書式オプションを複数並べる方法
o 書式オプションは、複数並べる事も出来ます。
o 複数並べた時の表示順は決まっています。
    + 表示順は、「属性、日付、ファイルサイズ、パス」です。
    + 短いファイル名を指定した時は、普通のファイル名は省略します。
    + フルパスとパスの要素を両方指定した時は、フルパスのみ表示します。
o 同じ書式を複数指定すると、一つ以外は無視します。

** 書式オプションの、良く使う組み合わせ
o %~nxa = 拡張子付きのファイル名です。
o %~dpa = ファイル %a の親フォルダーです。最後は \ で終わります。


**** メモ
o 書式オプションを指定すると、「"」が除去されます。
o ファイル名を扱う時は、必要に応じて「"」で括ります。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。制御文と環境変数▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > 環境変数の使い方。置換と部分文字列
    環境変数の生存期間について
    SET /A コマンドで数値計算出来る値の範囲(= 上限と下限)
(2011年3月9日変更。説明部分の見直し。%1は%1つ。$環境変数の使用条件を訂正)

2011年3月7日月曜日

ピアノロール画面。メニューアイコン1行目の意味 - FL STUDIO

ピアノロール
○FL9.1
ピアノロールの主要機能は、1列目に詰まっています。
ですので、1列目の並び方と意味を覚えると、ピアノロールでの入力操作で迷わなくなります。

o アイコンの意味を簡単に知りたい時は、アイコンにマウスカーソルを合わせて、FL STUDIO画面の左上を見ます。
    + FL STUDIO画面のメニューの下の行に、簡単な説明が表示されます。
o アイコンの意味をまとめて確認したい時は、「F1」キー。ヘルプ画面を呼び出します。


**** 1行目にあるアイコンの意味
o ピアノロールのアイコン1行目は、次のように並んでいます。
    + 最初の3つ = 機能メニューと「単位幅の設定」です。
    + 次の8つ = マウス操作の意味を変更します。
    + 再生ボタンとタイトル部分 = 再生、停止の他、編集対象を切り替えます。
    + 右の2つ = (ピアノロール画面の)最大化ボタンと閉じるボタンです。

** 最初の3つ = 機能メニューと「単位幅の設定」
o ▼マーク = Piano roll menu
    + ピアノロール画面のメニューです。押すと、選択肢が沢山出てきます。
o 工具マーク = Quick tool menu
    + 音符を加工する機能が並んでいます。
    + ▼マークの「Tool」の内容と同じです。
o U型磁石マーク = Snap menu
    + 音符を置いたり伸び縮みさせる時の、単位幅です。
    + 指定すると、単位幅に合わせて「正確に」置く事が出来ます。

** 次の8つ = マウス操作の意味の変更 = Tools menu
o 鉛筆マーク = Draw = 「Shift」キーを押しながら「P」
    + クリックすると、音符を1つ置きます。
    + クリックしたままマウスを横に動かすと、置いた音符が動きます。
    + 音符の上で右クリックすると、音符が消えます。
        + 右クリックは、消しゴムのように使う事も出来ます。
        + 右クリックしたまま、音符を1度擦ります。
o ブラシマーク = Paint = 「Shift」キーを押しながら「B」
    + 音符を連続配置します。
    + クリックしたままマウスを横に動かすと、同じ長さの音符が並びます。
    + 音符の上で右クリックすると、音符が消えます。
        + 右クリックは、消しゴムのように使う事も出来ます。
        + 右クリックしたまま、音符を1度擦ります。
o 禁止マーク = Erase = 該当キーは無いみたいです。
    + 消しゴムです。音符の上でクリックすると、選択した音符を削除します。
    + クリックしたまま音符を1度擦ると、音符は消えます。
    + 右クリックはクリックと同じ動作をします。
        + 実際には、この機能を愛用する人はあまり居ないと思います。
        + 鉛筆マークなどを選択している時にも、右クリックで同じ操作が出来るからです。
o スピーカーに×マーク = Mute =「Shift」キーを押しながら「T}
    + 消音(= ミュート)です。クリックすると、選択した音符を消音します。
    + 消音状態にある音符は、灰色をしています。元に戻したい時は、もう一度音符をクリックします。
    + 音符の上で右クリックすると、音符が消えますので気を付けます。
o カッターナイフマーク = Cut = 該当キーは無いみたいです。
    + 分割ツールです。クリックすると、選択した音符を分割します。
    + 複数の音符を同時に分割する事も出来ます。
    + 音符の無い所でクリックして、クリックしたまま複数の音符を横切ってから離します。
o 枠マーク = Select =「Shift」キーを押しながら「E}
    + 音符の選択です。クリックしたままマウスを動かすと、音符を枠のように選択する事が出来ます。
    + 複数の音符を選択したい時は、「Shift」キーを押しながら操作します。
    + 右クリックはクリックと同じ動作をします。
    + 音符を選択した後の一括操作は、他のマークに切り替えてから行います。
o 取っ手付きの四角マーク = Zoom to selection =「Shift」キーを押しながら「Z}
    + 拡大倍率を変更します。
    + キーボードの場合、数字を押すと倍率が変化します。
    + 指定出来る数字は、1から4まで。状況によっては5まで。
    + マウスの場合、このマークを右クリックすると、倍率を細かく選択出来ます。
    + 画面をクリックすると、4 を選んだ時と同じ状態になります。
    + 音符を枠のように選択してからクリックすると、倍率が変わります。
o スピーカーマーク = Playback (scrub) =「Shift」キーを押しながら「Y}
    + マウスカーソルの位置に、スピーカーのアイコンと縦線が現れます。
    + クリックすると、縦線上にある音符を鳴らします。

** 再生ボタンとタイトル部分 = 再生、停止と、編集対象の切り替え
o 横向きの▲マーク = 再生、停止
    + 押すと、「PAT」モード(= パターンモード)に切り替わります。
    + FL STUDIO画面にある再生ボタンの左側をご覧下さい。
        + 「PAT」モードの時は、スペースキーでも、パターンを再生、停止する事が出来ます。
        + また、WAVファイルなどを書き出す時に、現在のパターン部分だけ書き出します。
o タイトル部分の文字列
    + 「Piano roll - 編集中の楽器名(= Target Channel) - 下で編集出来る表情コントロール名(= Target Control)」
    + 楽器名をクリックすると、チャンネルウインドウ上にある別の楽器に切り替える事が出来ます。
    + 表情コントロール名をクリックすると、下の画面で操作出来る表情を変更する事が出来ます。
o 文字列以外のバー部分
    + Windowsのタイトルバーと同じ働きをします。
    + ダブルクリックすると、FL STUDIO画面内で最大化表示します。

** 右の2つ = (ピアノロール画面の)最大化ボタンと閉じるボタン
o 最大化ボタン
    + Windowsのタイトルバーにあるものと同じです。
    + クリックすると、FL STUDIO画面内で最大化表示します。
    + もう一度クリックすると、元の大きさに戻ります。
o 閉じるボタン
    + Windowsのタイトルバーにあるものと同じです。
    + FL STUDIO内での全画面表示に切り替える事が出来ます。


**** メモ
o 良く使う機能は、キーボード操作する手順も覚えると、快適操作出来る様になります。
    + キーボード操作は、マウス操作しない方の手で行います。
o FL STUDIO 9.1.0 の場合、FL STUDIOの説明文の通りキーボード操作しても、動かない機能がありました。
    + 動かなかった時は、このメモに書いているキーボード操作手順で試してみて下さい。
    + (もしかすると、オプションによって操作キーが変わるのかもしれません。)


**** 確認したバージョン
o FL STUDIO 9 Producer Edition   Version 9.1.0 (Signature Bundle)


==
関連ページ:
    ▼ピアノロール(= Piano roll)
    ▼チャンネルウインドウ(= Channel Window & Step Sequencer)
    ▼FL STUDIO
    ▼制作メモ
    > FL STUDIOのピアノロール画面で、同じパターン上にある他の楽器の音符を透かして見る
    FL STUDIOのピアノロール画面で、ゴーストとして見える音符を編集する

2011年3月6日日曜日

FOR /R = FOR文でサブフォルダーも処理対象にする - Windowsのコマンドプロンプト(bat,cmd)

WindowsコマンドのFOR
○Windows XP
FOR文を普通に書くと、一つのフォルダーの中だけでファイルを探します。
/R オプションを付けると、サブフォルダーの中にあるファイルも処理の対象にする事が出来ます。

o ワイルドカード(「*」や「?」)を使わない場合、動きが独特ですので注意します。
    + 見つかったフォルダー毎に、「見つかったフォルダー + "\" + 指定した文字列」が渡ります。
o /D オプション(= フォルダーのみ検索します)と一緒に指定する事も出来ます。


**** 書式
--------
for [/d] /r [ 検索するパス ] %変数名 in ( 検索するファイル名 ) do 実行するコマンド
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + 但し、変数名に限り、大文字小文字を区別します。
o /d = /D オプションです。
    + このオプションを指定すると、ワイルドカードを指定した時に、ファイルではなくフォルダーを探します。
    + このオプションを /R オプションの後ろに置く時は、「検索するパス」の後ろに置きます。
o /r = /R オプションです。
o 検索するパス = ここで指定したフォルダーの下を探します。
    + 省略すると、カレントディレクトリ(= 現在居る場所)の下を探します。
    + 存在しないフォルダーを指定する事も出来ます。
    + ここでは、UNIX形式の区切り文字「/」も指定出来ます。(例「C:/ミクさん」)
    + 空白やカンマ付きのフォルダーを指定する時は、「"」で括り、ワイルドカードを含めて指定します。
        + (例「"C:\ミクさん ネギ"」)
o %変数名 = 変数になる名前です。変数名は1文字で指定します。(例: %i)
    + バッチファイルでは、%%変数名。「%」を2つ書きます。
    + 変数名のおすすめは、英字1文字。こちらはヘルプに書かれています。
        + 大文字小文字を区別しますので、使う時には気を付けます。
        + (仕様外の動作)実際には、英字の他に、数字や、漢字などの全角文字も使用出来ました。(= Windows XPの場合です。)
o 検索するファイル名 = 「検索するパス」からの相対パスで指定します。
    + このコマンドは、「検索するパス」の下層にあるファイルのみを探す事を想定しています。
    + ワイルドカード(「*」や「?」)を使った時、「検索するパス」の下層にあるファイルだけを実際に探します。
    + ワイルドカードを使わない場合は、渡したい文字列を書く事が出来ます。
        + この時、FOR文は、ファイルの存在判定を行いません。
        + 「検索するパス」自身とサブフォルダーが見つかる度に実行します。
        + 変数に入る値は、「見つかったフォルダーのパス + "\" + 指定した文字列」になります。
        + ですので、実際に使う時は、呼び出したコマンド側で、変数を加工する必要があります。
        + 制限事項として、「*」、「?」、空白、カンマは渡したい文字列に使用する事が出来ません。
    + ファイル名は、複数指定する事が出来ます。空白やカンマで区切ります。
        + 検索結果が重複する時、1つのファイルに付き、コマンドを複数回呼びします。
    + 次の時は、「"」で括り、ワイルドカードを含めて指定します。
        + 空白やカンマ付きのフォルダーを指定する時(例「"a\miku san?"」)
        + ファイル名の中に「*」や「?」が含まれていないと、単なる文字列とみなしますので、注意します。
    + UNIX形式の区切り文字「/」は、基本的には指定出来ません。
        + 「"」で括り、ワイルドカードを含めて指定する(例「"a/miku*"」)と、ヒットはするみたいですが、変数に入るのは「検索するパス + "\" + 見つかったファイルのファイル名部分」です。
o 実行するコマンド = DO の後に書きます。
    + 複数並べたい時は、丸括弧(= 小括弧)で括る事も出来ます。
        + 括弧内で「環境変数を設定し、その値を参照する」時には、小技が必要になります。
        + 詳しくは、「バッチファイル。IF文やFOR文の中で複数コマンドを書く時の注意点
    + 大掛かりになる時は、CALL文が便利です。
    + 変数の使い方については、こちらをどうぞ
        + 「%変数の使い方
        + 「環境変数の使い方。置換と部分文字列


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o (設定なし) = このコマンドは、ERRORLEVELの値を更新しません。
    + 但し、FOR の中で実行するコマンドが ERRORLEVELの値を更新する事があります。
    + 「(ミクさん) の使い方が誤っています。」 = 括弧の前に IN が抜けています。


**** 使用例
o コマンドプロンプト画面で動かす時の書き方
--------
@echo off
for /r c:\ミクさん\ネギ料理 %f in (*の作り方.txt) do echo ミクさんの料理メモ : %f

for /d /r c:\ミクさん %f in (*料理*) do echo ミクさんの料理フォルダー : %f
echo on
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + /R コマンドだけ指定した時は、指定したファイルを探します。
    + /D /R を指定すると、指定したフォルダーを探します。
    + どちらも、ワイルドカードが付いていますので、実在するものを探します。

o バッチファイルで動かす時の書き方
--------
@echo off
for /r c:\ミクさん %%f in (ネギ料理\*の作り方.txt) do echo ミクさんの料理メモ : %%f
for /d /r c:\ミクさん %f in (*料理*) do echo ミクさんの料理フォルダー : %f
--------

    + 変数名の前に「%」を2つ付けます。


**** 機能
o ワイルドカード(「*」や「?」)を使ったパスを指定すると、「検索するパス」の下層にあるファイルを探して繰り返します。
    + 見つけたフォルダーのファイルは、変数の中に入れます。
    + 見つかったファイルのパスを、変数の中に入れます。
o ワイルドカードを使わない場合、単なる文字列として、「検索するパス」の下層にあるフォルダー毎に1回ずつ実行します。
    + 「検索するパス + "\" + 指定した文字列」を、変数の中に入れます。
o 空白やカンマで区切ると、複数のパス(もしくは文字列)を指定する事が出来ます。
o 「検索するファイル名」の中に空白やカンマを含めたい時は、ワイルドカードを使用して、かつ、「"」でパスを括ります。


**** メモ
o ワイルドカード使用時、隠しファイル属性を持つファイルは、検索対象から除外されます。
o ワイルドカードを使わない時の動作は、ファイル名部分は単なる文字列渡しです。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼FOR = 繰り返し実行する
    ▼Windowsコマンド。制御文と環境変数▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > FOR /F + DIR /B = ファイル名を順番に取り出して実行する方法
    FOR /F その1 = ファイルを1行ずつ取り出して実行する
    FOR /F その2 = コマンド実行結果を1行ずつ取り出して実行する
(2011年5月16日追加と訂正。書式欄の変数名。大文字小文字を区別する。推奨は英字のみ)
(2011年3月6日変更。パスの表記を、なるべくファイル名に変更)

2011年3月5日土曜日

ワイルドカード = Windowsコマンドで複数ファイルを指定する方法 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連
Windowsコマンドの中には、複数のファイルを同時に処理できるコマンドが多々あります。
複数ファイル(や複数のフォルダー)を指定する時は、ファイル名の中に、次の記号を入れます。

o 「*」は0文字以上の文字列。
o 「?」は任意の1文字。
    + 但し、その部分に「.」がある場合は、その手前の文字を指します。
    + 例えば、「type ???.txt」は、 a.txt も対象にします。


**** 使い方
o ワイルドカードは、「\」や「/」がある場合、一番右側で使う事が出来ます。
    + 例えば、「c:\ミクさん\*.txt」と書く事が出来ます。
o ワイルドカードは、「\」や「/」の左側で使う事は出来ません。
    + 例えば、「c:\*\私のメモ.txt」の検索結果は0件です。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > FCコマンドで、ファイル名のワイルドカードが正しく動かないパターン
    CD = 現在居る場所(= カレントディレクトリ)を表示、変更する
    PUSHD = 現在居る場所(= カレントディレクトリ)を保存しつつ変更する

FOR のオプション無し = FOR文でファイルだけを処理する、もしくは、文字列を処理する - Windowsのコマンドプロンプト(bat,cmd)

WindowsコマンドのFOR
○Windows XP
FOR文にオプションを付けない場合、ワイルドカードの有無によって動きが変わります。

o ワイルドカード(「*」や「?」)を使う場合 = 見つかったファイル毎に実行します。
o ワイルドカードを使わない場合 = 指定した文字列が、そのまま渡ります。実行は1回です。
o ファイル名や文字列を複数指定する事が出来ます。空白やカンマで区切ります。


**** 書式
--------
for %変数名 in ( ファイル名や文字列 ) do 実行するコマンド
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + 但し、変数名に限り、大文字小文字を区別します。
o %変数名 = 変数になる名前です。変数名は1文字で指定します。(例: %i)
    + バッチファイルでは、%%変数名。「%」を2つ書きます。
    + 変数名のおすすめは、英字1文字。こちらはヘルプに書かれています。
        + 大文字小文字を区別しますので、使う時には気を付けます。
        + (仕様外の動作)実際には、英字の他に、数字や、漢字などの全角文字も使用出来ました。(= Windows XPの場合です。)
o ファイル名や文字列 = ファイル名、もしくは、実行するコマンドに渡したい文字列です。
    + 複数指定する事が出来ます。空白やカンマで区切ります。
    + ワイルドカード(「*」や「?」)を使用出来ます。
        + ワイルドカードは、「\」や「/」の左側で使う事は出来ません。
        + 例えば、「*\miku3.txt」の検索結果は0件です。
    相対パスも指定出来ます。
        + 空白付きのファイル名を指定する方法は、少し下に記します。
    + ワイルドカードを使わない場合は、渡したい文字列を書く事が出来ます。
        + 条件は、文字列中に「*」「?」空白、カンマを含まない事
        + この時、FOR文は、ファイルの存在判定を行いません。
    + 次の時は、「"」で括り、ワイルドカードを含めて指定します。
        + 空白やカンマ付きのファイル名を指定する時(例「"d:\a\miku san.txt?"」)
        + UNIX形式の区切り文字「/」を指定する時(例「"d:/a/mikusan.txt?"」)
        + ファイル名の中に「*」や「?」が含まれていないと、単なる文字列とみなしますので、注意します。
o 実行するコマンド = DO の後に書きます。
    + 複数並べたい時は、丸括弧(= 小括弧)で括る事も出来ます。
        + 括弧内で「環境変数を設定し、その値を参照する」時には、小技が必要になります。
        + 詳しくは、「バッチファイル。IF文やFOR文の中で複数コマンドを書く時の注意点
    + 大掛かりになる時は、CALL文が便利です。
    + 変数の使い方については、こちらをどうぞ
        + 「%変数の使い方
        + 「環境変数の使い方。置換と部分文字列


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o (設定なし) = このコマンドは、ERRORLEVELの値を更新しません。
    + 但し、FOR の中で実行するコマンドが ERRORLEVELの値を更新する事があります。
    + 「(ミクさん) の使い方が誤っています。」 = 括弧の前に IN が抜けています。


**** 使用例
o コマンドプロンプト画面で動かす時の書き方
--------
@echo off
for %f in ("c:\ミクさん\*.txt") do echo ミクさんのメモ : %f
echo on
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。

o バッチファイルで動かす時の書き方
--------
@echo off
for %%f in ("c:\ミクさん\*.txt") do echo ミクさんのメモ : %%f
--------

    + 変数名の前に「%」を2つ付けます。


**** 機能
o ワイルドカード(「*」や「?」)を使ったパスを指定すると、ファイルや指定したファイル名(もしくはフォルダー名)を探して繰り返し実行します。
    + 隠しファイル属性を持つファイルは、検索対象から除外されます。
    + 見つけたフォルダーのパスは、変数の中に入れます。

o ワイルドカードを使わない場合、単なる文字列として、1回だけ実行します。
    + 指定した文字列は、変数の中に入れます。
o 空白やカンマで区切ると、複数のファイル名(もしくは文字列)を指定する事が出来ます。
o ファイル名の中に空白やカンマを含めたい時は、ワイルドカードを使用して、かつ、「"」でパスを括ります。

o サブフォルダーの下も検索したい時は、/R オプションを使います。
    + 詳しくは「FOR /R = FOR文でサブフォルダーも処理対象にする


**** メモ
o ワイルドカード使用時、隠しファイル属性を持つファイルは、検索対象から除外されます。
o ワイルドカードを使わない時の動作は、単なる文字列渡しです。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼FOR = 繰り返し実行する
    ▼Windowsコマンド。制御文と環境変数▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > FOR /D = FOR文でフォルダーだけを処理する、もしくは、文字列を処理する
    FOR /R = FOR文でサブフォルダーも処理対象にする
    FOR /F + DIR /B = ファイル名を順番に取り出して実行する方法
(2011年5月16日追加と訂正。書式欄の変数名。大文字小文字を区別する。推奨は英字のみ)
(2011年3月6日変更。パスの表記を、なるべくファイル名に変更)

FOR /D = FOR文でフォルダーだけを処理する、もしくは、文字列を処理する - Windowsのコマンドプロンプト(bat,cmd)

WindowsコマンドのFOR
○Windows XP
FOR文を普通に書くと、ファイルだけを処理の対象にします。
/D オプションを付けると、フォルダーだけを処理の対象にする事が出来ます。

o ワイルドカード(「*」や「?」)を使う場合 = 見つかったフォルダー毎に実行します。
o ワイルドカードを使わない場合 = 指定した文字列が、そのまま渡ります。実行は1回です。
o フォルダー名や文字列を複数指定する事が出来ます。空白やカンマで区切ります。


**** 書式
--------
for /d %変数名 in ( フォルダー名や文字列 ) do 実行するコマンド
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + 但し、変数名に限り、大文字小文字を区別します。
o /d = /D オプションです。
    + サブフォルダーの下も検索したい時は、/R オプションも一緒に使います。
    + 詳しくは「FOR /R = FOR文でサブフォルダーも処理対象にする
o %変数名 = 変数になる名前です。変数名は1文字で指定します。(例: %i)
    + バッチファイルでは、%%変数名。「%」を2つ書きます。
    + 変数名のおすすめは、英字1文字。こちらはヘルプに書かれています。
        + 大文字小文字を区別しますので、使う時には気を付けます。
        + (仕様外の動作)実際には、英字の他に、数字や、漢字などの全角文字も使用出来ました。(= Windows XPの場合です。)
o フォルダー名や文字列 = フォルダー名、もしくは、実行するコマンドに渡したい文字列です。
    + 複数指定する事が出来ます。空白やカンマで区切ります。
    + ワイルドカード(「*」や「?」)を使用出来ます。
        + ワイルドカードは、「\」や「/」の左側で使う事は出来ません。
        + 例えば、「*\miku3」と書いても、a\miku3 フォルダーを見つける事は出来ません。
    相対パスも指定出来ます。
        + フォルダー名に空白を含める方法は、少し下に記します。
    + ワイルドカードを使わない場合は、渡したい文字列を書く事が出来ます。
        + この時、FOR文は、フォルダーの存在判定を行いません。
    + 次の時は、「"」で括り、ワイルドカードを含めて指定します。
        + 空白やカンマ付きのフォルダーを指定する時(例「"d:/a/miku san?"」)
        + UNIX形式の区切り文字「/」を指定する時(例「"d:/a/miku san?"」)
        + フォルダー名の中に「*」や「?」が含まれていないと、単なる文字列とみなしますので、注意します。
o 実行するコマンド = DO の後に書きます。
    + 複数並べたい時は、丸括弧(= 小括弧)で括る事も出来ます。
        + 括弧内で「環境変数を設定し、その値を参照する」時には、小技が必要になります。
        + 詳しくは、「バッチファイル。IF文やFOR文の中で複数コマンドを書く時の注意点
    + 大掛かりになる時は、CALL文が便利です。
    + 変数の使い方については、こちらをどうぞ
        + 「%変数の使い方
        + 「環境変数の使い方。置換と部分文字列


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o (設定なし) = このコマンドは、ERRORLEVELの値を更新しません。
    + 但し、FOR の中で実行するコマンドが ERRORLEVELの値を更新する事があります。
    + 「(ミクさん) の使い方が誤っています。」 = 括弧の前に IN が抜けています。


**** 使用例
o コマンドプロンプト画面で動かす時の書き方
--------
@echo off
for /d %f in ("c:\ミクさん\*") do echo ミクさんのフォルダー : %f
echo on
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。

o バッチファイルで動かす時の書き方
--------
@echo off
for /d %%f in ("c:\ミクさん\*") do echo ミクさんのフォルダー : %%f
--------

    + 変数名の前に「%」を2つ付けます。


**** 機能
o ワイルドカード(「*」や「?」)を使ったパスを指定すると、フォルダーだけ探して繰り返します。
    + 見つけたフォルダーのパスは、変数の中に入れます。
o ワイルドカードを使わない場合、単なる文字列として、1回だけ実行します。
    + 指定した文字列は、変数の中に入れます。
o 空白やカンマで区切ると、複数のフォルダー名(もしくは文字列)を指定する事が出来ます。
o フォルダー名の中に空白やカンマを含めたい時は、ワイルドカードを使用して、かつ、「"」でパスを括ります。


**** メモ
o ワイルドカード使用時、隠しファイル属性を持つファイルは、検索対象から除外されます。
o ワイルドカードを使わない時の動作は、単なる文字列渡しです。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼FOR = 繰り返し実行する
    ▼Windowsコマンド。制御文と環境変数▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > FOR /R = FOR文でサブフォルダーも処理対象にする
    FOR /F + DIR /B = ファイル名を順番に取り出して実行する方法
    FOR /F その1 = ファイルを1行ずつ取り出して実行する
(2011年5月16日追加と訂正。書式欄の変数名。大文字小文字を区別する。推奨は英字のみ)
(2011年3月6日変更。パスの表記を、なるべくファイル名に変更)

2011年3月4日金曜日

AWKで入力ファイルの指定を不要にする方法 - AWK

AWKプログラムを動かす
AWKのパターンと制御文
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
AWKプログラムの書き方を工夫すると、入力ファイルの指定が無くても動かす事が出来ます。


**** 原理
o 次の時、AWK は入力ファイルが無くても、データ入力を要求せずに動きます。
    + BEGIN パターン以外のパターンを書かない時。
    + もしくは、BEGIN パターン内で入力ファイルを設定した時。
o ですので、入力ファイルの指定を不要にしたい時は、この条件のどちらかを満たすように書きます。


**** 手順
o BEGIN パターンだけ書く方法
--------
BEGIN {
    print "眠れない時は、";
    for (i = 1; i <= 39; ++i) {
        print "ミクさんが " i "人。";
    }
}
--------

    + 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。

o 入力ファイルをプログラムで追加する方法
--------
BEGIN {
    ARGV[ARGC++] = "ミクさんの食べ物リスト.txt";
}
{
    print $0;
}
--------

    + 詳しくは、「AWKの入力ファイルを、AWKプログラムの中で追加、削除(= キャンセル)する方法


**** メモ
o BEGIN パターンだけの使い方は、特に、大量のテストデータを作る時に便利です
    + 問題が起きた時はメモ帳でも修正出来ますし、持ち運びも簡単です。
    + テスト終了後、テストデータは削除してしまっても、後で再作成出来ます。
o プログラムが途中で止まっているように見える時は、試しに文字を入力してみます。
    + 文字が入力出来る時は、AWKが、画面からのデータ入力を要求しています。
    + そのような時は、「Ctrl」キーを押しながら「Z」キーを押すと先に進みます。
    + 詳しくは、「入力ファイルを手入力する方法


**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3
o original = the one true awk(updated May 1, 2007)


==
関連ページ:
    ▼AWKプログラムを動かす
    ▼AWKのパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > AWKの入力ファイルを、AWKプログラムの中で追加、削除(= キャンセル)する
    入力ファイルを手入力する
    AWKPATH = コマンドでAWKファイル名を指定する時、ファイルの場所を省略する(Gawk, mawk32専用)
    BEGIN = 最初に実行する

2011年3月3日木曜日

AWKの入力ファイルを、AWKプログラムの中で追加、削除(= キャンセル)する方法 - AWK

AWKプログラムを動かす
AWKのパターンと制御文
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
AWKの入力ファイルは、AWKプログラムの中で追加、変更、削除(= キャンセル)する事が出来ます。
変数 ARGC と ARGV を使います。


**** 手順
o 3つの手順について纏めました。
    + 1. 入力ファイルを後で追加する方法
    + 2. 読み込み予定の入力ファイルを削除(= キャンセル)する方法
        + (この手順を応用すると、入力予定のファイル名を変更する事も出来ます。)
    + 3. 後ろに続く入力ファイルをまとめて削除(= キャンセル)する方法

o 1. 入力ファイルを後で追加する方法
    + 次の書き方が便利です。「 ARGV[ARGC++] = "ファイル名" 」
    + ARGV[ARGC] に追加したいファイル名を入れた後に、ARGC に 1 を加えます。
--------
BEGIN {
    ARGV[ARGC++] = "ネギパーティ参加者.txt";
    ARGV[ARGC++] = "ネギパーティ参加者その2.txt";
}
{
    print "参加者 :" $1 "さん";
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


o 2. 読み込み予定の入力ファイルを削除(= キャンセル)する方法
    + 次のように書きます。「 ARGV[消したいファイルの順番] = "" 」
--------
BEGIN {
    ARGV[1] = ""; # 最初に読み込むファイルをスキップします。
}
{
    print "参加者 :" $1 "さん";
}
--------

    + ARGV[1] に別のファイル名を指定すると、AWKは指定したファイルを読み込みます。

o 3. 後ろに続く入力ファイルをまとめて削除(= キャンセル)する方法
    + 次の書き方が便利です。「 ARGC = (合計ファイル数 + 1) 」
--------
BEGIN {
    ARGC = 2; # ファイルを最初の1つだけ読み込みます。
}
{
    print "参加者 :" $1 "さん";
}
--------

    + この他に、2番目の方法を使って、ARGV のファイル名を1つずつ消す方法もあります。


o 詳しい情報はこちらです。
    + ARGC = ARGVに入っている要素の個数
    + ARGV = AWK起動時に指定した入力ファイル名とコマンド名
    + ARGIND = ARGVにおける現在入力中ファイルの位置 (Gawk専用)


**** メモ
o BEGIN だけでなく、ファイル読み込み中に変更する事が出来ます。
    + 読み込み中のファイルを削除した時の動作は、処理系によって異なります。
    + 詳しくは、「ARGC = ARGVに入っている要素の個数
o 現在のファイルの位置を調べたい時は、変数 ARGINV のメモ「ARGIND = ARGVにおける現在入力中ファイルの位置」(Gawk専用)をどうぞ。
    + この変数は Gawk限定ですが、メモ欄に、mawkなどでも動かす為の情報を載せました。


**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3
o original = the one true awk(updated May 1, 2007)


==
関連ページ:
    ▼AWKプログラムを動かす
    ▼AWKのパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > 入力ファイルを手入力する
    AWKPATH = コマンドでAWKファイル名を指定する時、ファイルの場所を省略する(Gawk, mawk32専用)
    BEGIN = 最初に実行する

Edison プラグインで、WAVファイルからピアノロール(= MIDI)に変換する方法 - FL STUDIO

ミキサー
○FL9.1
Edison は、WAVファイルなどの音声ファイルを加工するプラグインです。
その中に、音声ファイルからピアノロールに変換する機能があります。

o 大雑把に、音の傾向を把握したい時に便利です。
o 変換するのは、ノート(= 音符)と Velocity (= 音を弾く強さ)だけです。
o 正確な譜面にしたい時は、後で手作業で修正します。


**** 手順
o ミキサーを開きます。F9 キーが簡単です。
o ミキサー画面右上の空いている欄で、左側の▼を押します。
o 選択肢が出てきますので、「Select」-「Edison」
o Edison 画面の紫色部分に、音声ファイルをドロップします。
    + もしくは、紫色部分をクリックして、音声ファイルを選びます。
o 紫色部分に音声ファイルの波形が出てきます。内容を確認したい時は、左上にある横向き▲ボタンを押します。

o ここで、おもむろに、チャンネルウインドウを手前に出します。
o そして、ピアノロールに置き換えたい所を、緑色に光らせます。
    + 楽器名ボタンの右隣にある、光る部分です。

o Edison 画面に戻って、左から4つ目。工具アイコンをクリックします。はさみマークの右隣にあります。
o 選択肢が出てきますので、右下付近にある、「Convert to score and dump to piano roll」。

o ピアノロールに変換した後は、Edisonは不要です。
    + Edison 画面を閉じたい時は、Edison画面右上のx印。
    + ミキサーから Edison プラグインを外す時は、Edison を選択した時の▼をもう一度押します。
        + 選択肢が出てきますので、「Select」-「(none)」


**** 確認したバージョン
o FL STUDIO 9 Producer Edition   Version 9.1.0 (Signature Bundle)


==
関連ページ:
    ▼ミキサー(= Mixer)
    ▼FL STUDIO
    ▼制作メモ
    > Wave Candy プラグイン = 現在鳴っている音の波形を視覚的に確認する
    Fruity Balance プラグイン = エフェクトを通す途中で音量や定位を変更する
    ミキサートラックの名前を初期値に戻す

2011年3月2日水曜日

FOR /L = FOR文で普通に数を数える方法 - Windowsのコマンドプロンプト(bat,cmd)

WindowsコマンドのFOR
○Windows XP
コンピューター言語の FOR 文と言えば、数を数えて繰り返す例が良く出てきます。
Windowsの FOR コマンドで普通に数を数えたい時は、FOR に /L オプションを付けます。


**** 書式
--------
for /l %変数名 in (初期値, 増分, 最後の数) do 実行するコマンド
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + 但し、変数名に限り、大文字小文字を区別します。
o /l = /L オプションです。
o %変数名 = 変数になる名前です。変数名は1文字で指定します。(例: %i)
    + バッチファイルでは、%%変数名。「%」を2つ書きます。
    + 変数名のおすすめは、英字1文字。こちらはヘルプに書かれています。
        + 大文字小文字を区別しますので、使う時には気を付けます。
        + (仕様外の動作)実際には、英字の他に、数字や、漢字などの全角文字も使用出来ました。(= Windows XPの場合です。)
o 初期値 = 最初に変数に入る値です。整数で指定します。
    + 負の数も指定出来ます。
    + 実数を指定すると、小数点以下を無視するみたいです。
o 増分 = 繰り返す時に増やす数です。整数で指定します。
o 最後の数 = 終了条件となる数です。整数で指定します。
    + 増分計算する時に「この値を通過」すると、実行は止まります。
o 実行するコマンド = DO の後に書きます。
    + 複数並べたい時は、丸括弧(= 小括弧)で括る事も出来ます。
        + 括弧内で「環境変数を設定し、その値を参照する」時には、小技が必要になります。
        + 詳しくは、「バッチファイル。IF文やFOR文の中で複数コマンドを書く時の注意点
    + 大掛かりになる時は、CALL文が便利です。
    + 変数の使い方については、こちらをどうぞ
        + 「%変数の使い方
        + 「環境変数の使い方。置換と部分文字列

** 構文の区切り文字について
o カンマ区切りですが、空白区切りでも正しく動きました。
    + もっとも、ヘルプには書いていませんので、カンマを付けて書く事をおすすめします。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o (設定なし) = このコマンドは、ERRORLEVELの値を更新しません。
    + 但し、FOR の中で実行するコマンドが ERRORLEVELの値を更新する事があります。
    + 「[1 の使い方が誤っています。」 = FOR文の書き方が間違っています。FOR の文法を見直して下さい。


**** 使用例
o コマンドプロンプト画面で動かす時の書き方
--------
@echo off
for /l %i in (3, 9, 39) do echo ミクさんの買い物カゴの中身。ネギ %i 本
echo on
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + /l = /L オプションです。

o バッチファイルで動かす時の書き方
--------
@echo off
echo 蕎麦に合うネギを買いに来たミクさん。
for /l %%i in (3, 9, 39) do echo ミクさんの買い物カゴの中身。ネギ %%i 本
echo お蕎麦の事を忘れていませんか。ミクさん。
--------

    + 変数名の前に「%」を2つ付けます。


**** メモ
o 繰り返し文の途中で強制的に止めたくなった時は、「Ctrl」キーを押しながら「C」キーを連打します。
    + 短い処理の場合、3回程度押すと止まります。
o 途中で停止したい時は、「Ctrl」キーを押しながら「S」キー。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼FOR = 繰り返し実行する
    ▼Windowsコマンド。制御文と環境変数▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > FOR のオプション無し = FOR文でファイルだけを処理する、もしくは、文字列を処理する
    FOR /D = FOR文でフォルダーだけを処理する、もしくは、文字列を処理する
    FOR /R = FOR文でサブフォルダーも処理対象にする
(2011年5月16日追加と訂正。書式欄の変数名。大文字小文字を区別する。推奨は英字のみ)

2011年3月1日火曜日

Revolta 2 = MIDI入力用電子音系シンセサイザー - Music Maker

シンセサイザー
o シンセサイザーの操作
VitaやRevolta 2の音色調整を、音を聞きながら行う
シンセサイザー Revolta 2のMIDIパラメーター特性

o 良く使う操作
MIDI Editorで使う楽器を変更する
    + MIDIの入力手順は、「▼MIDI Editor

o 作曲ツール連携
DominoからMusic Makerの音源 Vita や Revolta 2を使う
----
Revolta 2は、MIDI Editorから使う事の出来るシンセサイザーの1つです。

o 電子音です。Revolta 2の画面で、音を調節する事も出来ます。
o 音色調節以外の操作手順は、Vitaと同じです。

==
関連ページ:
    ▼シンセサイザー
    ▼音素材を作る
    ▼Music Maker
    ▼制作メモ
    > ▼MIDI Editor
    付属シンセサイザーの一覧