←
▼
▲
タスクの開始時間を再設定します。
番号またはコマンド >SetTask
タスクの開始時間を再設定します。
タスク名(登録済みのもの)>vbslib_test
例: 13:00 ... 今が午前10時なら、今日の午後1時に実行する
例: 1:00 ... 今が午前10時なら、明日の午前1時に実行する
例: +1:00 ... 今から1時間後に実行する
いつ実行を開始しますか>+0:01
SetTask
テスト
→ T_Task フォルダ
vbslib_test
+0:01
関連
ソース
→ vbslib Prompt.vbs
←
▼
▲
PCの電源を切ったり再起動したりします。
番号またはコマンド >shutdown
1) PowerOff
2) Reboot
3) Hibernate
4) Sleep
5) Standby
番号を入力してください >
参考
shutdown
ソース
→ vbslib Prompt.vbs
←
▼
▲
テキストファイルの内容を行単位でソート(整列)します。
番号またはコマンド >SortLines
テキストファイルの内容を行単位でソート(整列)します。
入力ファイルのパス >C:\Folder\Input.txt
出力ファイルのパス(★上書きします)>C:\Folder\Output.txt
Enter のみ:残さない
同じ内容の行をそのまま残しますか [Y/N]
出力しました。
SortLines
C:\Folder\Input.txt
C:\Folder\Output.txt
Beckham
Christiano
Aguirre
Diego
Beckham
Input.txt
Output.txt
Aguirre
Beckham
Beckham
Christiano
Diego
Aguirre
Beckham
Christiano
Diego
Output.txt
Input.txt
Beckham
Christiano
Aguirre
Diego
Beckham
同じ内容の行をそのまま残すとき:
同じ内容の行をそのまま残さないとき:
ソース
→ vbslib Prompt.vbs
関連
←
▼
▲
テキストファイルのタブ文字と空白文字を変換します。
変換したら変換後のテキストファイルが開きます。
番号またはコマンド >SpaceToTab
テキストファイルのタブ文字と空白文字を変換します。
1) 行頭のタブ文字→空白文字 [TabToSpace]
2) 行頭の空白文字→タブ文字 [SpaceToTab]
3) 行頭の文字は変換しない [NoChange]
番号またはコマンド名を入力してください >SpaceToTab
1) 行頭以外のタブ文字→空白文字 [TabToSpace](←Enterのみのとき)
2) 行頭以外の空白文字→タブ文字 [SpaceToTab]
3) 行頭以外の文字は変換しない [NoChange]
番号またはコマンド名を入力してください >TabToSpace
タブ文字のサイズ(Enterのみ=4)>
変換前のテキストが書かれたファイルのパス >C:\file.txt
SpaceToTab
→ T_ChangeTabSpace フォルダ
テスト
SpaceToTab
TabToSpace
C:\file.txt
関連
st コマンドを実行すると、行頭の空白文字→タブ文字が自動的に選ばれます。
ts コマンドを実行すると、行頭のタブ文字→空白文字が自動的に選ばれます。
参考
ソース
→ vbslib Prompt.vbs
コマンドラインで /AutoExit オプションを付けて起動したときは、変換後に自動的に終了します。
/AutoExit:1000 とすると 1秒後に自動的に終了します。
サンプル
→ Samples\SpaceToTab フォルダー
←
▼
▲
スクリーンセーバーを起動しないようにします。
番号またはコマンド >StopScreenSaver
-------------------------------------------------------------------------------
30秒ごとに自動的にシフトキーを押すことで、スクリーンセーバーを起動しないようにし
ます。
スクリーンセーバーを停止する時間(分)> 60
残り 60分
StopScreenSaver
60
ソース
→ vbslib Prompt.vbs
←
▼
▲
仮想的なスイッチの設定に従って、複数のファイルを編集します。
たとえば、デバッグ用の設定とリリース用の設定を切り替えるスイッチを定義して、
デバッグに必要ないくつかのソース ファイルや設定ファイルの編集をまとめて行います。
<Switches>
<SwitchNow target_set_names="Debug"/>
<Switch set_names="Release, Debug"/>
<File path="debug.h">
<T line="whole">
<Debug>#define DEBUG 1</Debug>
<Release>// #define DEBUG 1</Release>
</T>
</File>
</Switches>
Switches.swit 設定ファイル:
サンプル
debug.h
:
// #define DEBUG 1
:
debug.h
:
#define DEBUG 1
:
↑ コメント アウト // による無効化
Switches を実行すると、
Debug 設定にスイッチします。
…
…
スイッチの1つを定義。
スイッチの値は、コンマ区切り
(CSV 形式)、で指定します。
Debug にスイッチしたときと、
Release にスイッチしたときの
debug.h ファイルの一部の
テキストを指定しています。
…
スイッチ
番号またはコマンド >Switches
-------------------------------------------------------------------------------
環境に合わせて複数のテキスト ファイルを自動編集します。
設定ファイルのパス >C:\work\Switches.trans
-------------------------------------------------------------------------------
C:\work\Text1.txt
C:\work\Text2.txt
C:\work\File.txt
C:\work\Folder
以上のファイルを編集します。
続行するには Enter キーを押してください . . .
-------------------------------------------------------------------------------
C:\work\Text1.txt
C:\work\Text2.txt
C:\work\File.txt
C:\work\Folder
編集しました。
Switches
Switch タグ、File タグ、T タグは、複数指定できます。
debug.h ファイルの中で、// #define DEBUG 1 を検索して、見つかったら、
#define DEBUG 1 に置き換えます。
関連
ソース
テスト
→ T_Switches.vbs
→ vbslib Prompt.vbs
↑ コメント アウト削除による有効化
どのスイッチの値も対象のファイルにないときは、エラーになります。
→ (test) ToolsLib.vbs
→ ToolsLib.vbs
注意
コードのサイズを減らすために #if を使うと、整合性を取ることが非常に難しくなります。
でコードのサイズを減らすとよいでしょう。
←
▼
▲
Switches/SwitchNow
@target_set_names
切り替えた後のスイッチの値。
複数の値を指定するときは、CSV 形式(コンマ区切り)で記述します。
切り替えるたびに記述しなおしてください。
例: target_set_names="Debug, Minimum"
@verbose
デバッグ用の詳細表示をするかどうか。 "yes" か "no"。
Switches/Switch
@set_names
スイッチの値の定義。
CSV 形式(コンマ区切り)で記述します。
通常、オンかオフに相当する2つのシンボルを記述しますが、
3つ以上記述することもできます。
複数のスイッチを定義できますが、スイッチの値の名前空間はグローバル
ですので、衝突しないようにしてください。
1つのみ
複数可能
Switches/File
下記の他に、
も、記述できます。
複数可能
@path
内容を置き換えるテキストファイルのパス。
Switches/File/T
複数可能
@line
省略時は、置き換えるテキストが行の途中にあっても置き換えます。
"head" の時は、行の先頭のみ置き換えます。
"whole" の時は、行の全体に対して置き換えます。
Switches/File/T/(スイッチの値)
text()
スイッチの値がこれまで設定されていたときは、置き換える前のテキスト。
スイッチの値がこれから設定しようとしているときは、置き換えた後のテキスト。
で定義した変数を参照することができます。
@variable
text() で、
で定義した変数を参照するかどうか。 "yes" か "no"。
"no" のときは、${Var} のようなテキストは、変数の値に置き換わりません。
text() から、行頭の空白やタブをカットしたテキストで処理するかどうか。
"yes" か "no"。 参考:
text() に、行頭の空白やタブを追加したテキストで処理するようにします。
"${Count}*${Character}" 形式で指定します。
例: "2*	" … 2つのタブ、 "8* " … 4つの空白
なお、&#〜; は、
XML の文字参照
です。
Switches/File/T/(スイッチの値)/(スイッチの値)/ ...
複数可能
複数可能
ネストしたスイッチの値は、And 条件として処理します。
なお、OR 条件を指定する方法はありません。 Variable タグを活用してテキストを指定して
ください。
例:
<T>
<Debug>
<Minimum>Debug and Minimun</Minimum>
<Full>Debug and Full</Full>
</Debug>
<Release>
<Minimum>Release and Minimun</Minimum>
<Full>Release and Full</Full>
</Release>
</T>
Switches/File/T/LinesStart[attribute_of='T']
1つのみ
置き換える範囲の直前の行にマッチするキーワード。
このキーワードにマッチした行の次の行から、LinesEnd[attribute_of='T']/text()
に指定したキーワードにマッチした行の前の行までが、同じ T タグを親要素に
持つタグで指定したテキストで置き換える範囲です。
text()
<T>
<LinesStart attribute_of="T">StartLine</LinesStart>
<LinesEnd attribute_of="T">EndLine</LinesStart>
<Minimum>Minimun</Minimum>
<Full>Full</Full>
</T>
例:
上記の設定で Full にスイッチすると、下記のように置き換わります。
Minimum
-- StartLine --
Minimum
-- EndLine --
Minimum
Minimum
-- StartLine --
Full
-- EndLine --
Minimum
text()
置き換える範囲の直後の行にマッチするキーワード。
参考 → LinesStart[attribute_of='T']
1つのみ
Switches/File/T/LinesEnd[attribute_of='T']
省略時は、スイッチの値のタグで囲まれたテキストでファイルの内容を
置き換えますが、
"path" を指定すると、スイッチの値のタグで囲まれたテキストを、
ファイルやフォルダーのパスとして処理します。 そして、スイッチの値に
よって、ファイルやフォルダーをコピーして置き換えます。 パスを指定しな
かったときは、ファイルやフォルダーを削除します。
@text_type
<File path="File.txt">
<T text_type="path">
<SetX>File\FileX.txt</SetX>
<SetY>File\FileY.txt</SetY>
<SetZ></SetZ>
</T>
</File>
例:
SetX にスイッチすると、File\FileX.txt から File.txt にコピーします。
SetY にスイッチすると、File\FileY.txt から File.txt にコピーします。
SetZ にスイッチすると、File.txt を削除します。
Switches の設定ファイルに記述できる XML の内容を説明します。
スイッチのスイッチには対応していません。
もし対応していれば、たとえば、A, B or C がオンの場合 X がオン、D or E がオンの場合 Y がオン
が定義できれば、同じ text() を 3つと 2つ書く必要がなくなります。
@dump
"yes" のときは、text() の内容をバイナリー形式でダンプします。
文字コード セットは、BOM 付き Unicode です。 省略時は "no" です。
スイッチの値がマッチしないときのヒントになります。
←
▼
▲
ショートカットが指すファイルを2つのフォルダー間で同期コピーします。
番号またはコマンド >SyncByShortcut
-------------------------------------------------------------------------------
ショートカットが指すファイルを2つのフォルダー間で同期コピーします。
設定ファイルのパス >
フォルダー (1): "C:\FolderA"
フォルダー (2): "C:\FolderB"
C:\FolderA\A.txt
C:\FolderB\sub\A.txt
以上のファイルを、対応するフォルダーにコピーします。
ソース
→ vbslib Prompt.vbs
テスト
→ T_SyncByShortcut フォルダー
SyncByShortcut
←
▼
▲
複数のターゲット間でファイルの内容を一度に同期(マージ)することで、全てのターゲットが
最新の状態であることを維持できるようになります。
行がファイル、列がモジュールのターゲット、という表を表示して、同期するファイルの状況を
一覧できます。
番号またはコマンド >SyncFilesT
-------------------------------------------------------------------------------
>SyncFilesT
行がファイル、列がモジュールのターゲット、という表を表示して、すべてのターゲット
間で同期(マージ)することを支援します。
設定ファイルのパス >C:\Folder\SyncFilesT_Sample.xml
-------------------------------------------------------------------------------
ターゲット間で比較するファイルの kind 値を入力してください。
1. kind 値 1 のファイルを比較する
2. kind 値 2 のファイルを比較する
:
97. 再スキャンして、一覧を表示する [Reload]
98. 詳細を表示する [ShowDetail]
96. HTML ファイルを保存する [SaveHTML]
99. 終了 [Exit]
kind 値または上記の番号またはコマンド名>
テスト
→ T_SyncTable フォルダー
→ SyncFilesMenuLib.vbs
ソース
ターゲット間でファイルを比較する、を選ぶと、
が起動するのでファイルの内容に
<SyncFilesT>
<HashList path="Committed MD5List.txt"/>
<ModuleFiles module_name="ModuleX">
<TargetFiles index="1" target_name="ModuleX\TargetA" path="ModuleX\TargetA"/>
<TargetFiles index="2" target_name="ModuleX\TargetB" path="ModuleX\TargetB"/>
<TargetFiles index="3" target_name="ModuleX\TargetC" path="ModuleX\TargetC"/>
<!-- index="1,2,3" -->
<File kind="1" description="A,A,B" name="g1.c" line_num="8"/>
<File kind="2" description="A, , " name="g2.c" line_num="9"/>
<File kind="2" description=" ,B,B" name="g3.c" line_num="10"/>
</ModuleFiles>
<CommittedFile hash="9a0baa2ed090b16796c55c156b5ffca9" revision="ModuleX\1\01\A"/>
<CommittedFile hash="a307d745bf90d586726f52a0689258fb" revision="ModuleX\1\01\B"/>
<CommittedFile hash="b927f9ad55f40d1b13688d417337d3e2" revision="ModuleX\2\01\A"/>
<CommittedFile hash="60422f855bd29aa68f7316855f43f4c1" revision="ModuleX\2\01\B"/>
</SyncFilesT>
上記の表は、下記の設定ファイルを開いたとき(SyncFilesT コマンドを起動したとき)に表示
されます。
表が崩れているのは、ブラウザーが標準仕様に対応していないためです。
表の色から、g1.c ファイルは、TargetA と TargetB で内容が同じであることを表しています。
同様に g3.c ファイルは、TargetB と TargetC で内容が同じであることを表しています。
同じ色でも行が異なれば、同じ内容ではありません。
01\A は、リビジョン 01、description 記号 A という意味です。 リビジョンは、01 から始まる
整数に限られます。 description 記号が同じファイルは、同じ内容であるべきということを
表しています。
関連
→ ModuleAssort
SyncFilesT
C:\Folder\SyncFilesT_Sample.xml
ファイル名の左にある番号は、kind 番号です。 ターゲットによってファイル名が異なって
いても、kind 番号を合わせれば比較対象になり、同じ行に配置されます。
SyncFilesT を、起動すると、下記のサンプルのような表が表示されます。
ModuleX
TargetA
g1.c
g3.c
g3.c
g1.c
TargetB
g2.c
g3.c
TargetC
ついては、手動で同期してください。
上記の TargetA (index=1) の g2.c ファイルは、TargetB, TargetC の g3.c ファイルと同期を
とるように kind 番号を合わせています。 line_num の値は、自動的に更新されます
ターゲットのフォルダーの一部だけを比較対象にするときは、Folder タグ、File タグ、Except タグを
記述してください。 詳細
<TargetFiles index="1" target_name="TargetA" path="TargetA">
<Folder path="TargetA">
<Except path="TargetA\Sub"/>
</Folder>
<Folder path="TargetA\Sub\1"/>
</TargetFiles>
TargetFiles タグの path 属性は、子ノードに Folder タグ、File タグ、Except タグがあるときは、
ターゲットのルート フォルダーを指定するたけで、比較対象のフォルダーにはなりません。
必要なら、上記のように、Folder タグで改めて指定してください。
→ SyncFilesT_Class、全ターゲット表
←
▼
▲
番号またはコマンド >syncfilest_new
-------------------------------------------------------------------------------
>SyncFilesT
SyncFilesT で使う設定ファイルのテンプレートを生成します。
各ターゲットのフォルダーが入ったフォルダーのパス >C:\ModuleX
>OpenForWrite "C:\_SyncFilesT_ModuleX.xml"
生成した上記の設定ファイルでよければ、上書きされないためにファイル名を変えて
ください。
syncfilest_new
フォルダーの中の一部ファイルだけ同期するときは、同期するファイルだけを抽出するようにコピーを
するスクリプトを独自に作成して、コピーしたフォルダーに対して SyncFilesT ツールを使うとよいでしょ
う。 また、逆方向のコピーをするスクリプトも作成するとよいでしょう。
<SyncFilesT>
<ModuleFiles module_name="ModuleX">
<TargetFiles index="1" target_name="ModuleX\TargetA" path="ModuleX\TargetA"/>
<TargetFiles index="2" target_name="ModuleX\TargetB" path="ModuleX\TargetB"/>
<TargetFiles index="3" target_name="ModuleX\TargetC" path="ModuleX\TargetC"/>
<!-- index="1,2,3" -->
<File kind="1" description="A,A, " name="g1.c" line_num="8"/>
<File kind="1" description=" , ,B" name="g2.c" line_num="9"/>
<File kind="2" description="A,B,B" name="g3.c" line_num="10"/>
</ModuleFiles>
</SyncFilesT>
を新規に作成するときは、比較する各種ターゲットを1つのフォルダーに
SyncFilesT_new コマンド
を使って自動作成します。
ただし、TargetFiles/@index、File/@kind、 File/@description は、調整する必要があります。
TargetFiles タグを追加するときは、新規 index 属性の値が、他の index 属性の値と衝突していない
ことを検索して確認してください。 TargetFiles タグの index 属性の値を変更したときは、File タグの
description 属性も合わせて変更してください。
まとめてから、
ModuleX
TargetA
g1.c
g3.c
g3.c
g1.c
TargetB
g2.c
g3.c
TargetC
比較する各種ターゲットを1つのフォルダーにまとめて、
の SyncFilesT_new コマンドを実行すると、
SyncFilesT の設定ファイルが、指定したフォルダーの親フォルダーにできます。
_SyncFilesT_ModuleX.xml
上記は、TargetC の g2.c ファイルが、TargetA, TargetB の g1.c ファイルと同期をとるように
調整済みです。
File タグを追加するときは、新規 kind 属性の値が、他の kind 属性の値と衝突していないことを
検索して確認してください。 File タグの kind 属性の値を変更したときは、CommittedFile タグの
revision 属性も合わせて変更してください。
… このフォルダーを指定します。
←
▼
▲
あるターゲットの1つのファイルに更新があったとき、SyncFilesT が表示する表は、下記のように変わります。
なお、表の中の 01\A(ブラウザーによっては 01\A) の 01 は、リビジョン番号、A は、ターゲットの
description 記号です。 description 記号が同じなら、同じ内容のファイルであるべきことを表します。
kind 値または上記の番号またはコマンド名>1
-------------------------------------------------------------------------------
1)
Enter のみ:終了
c+番号:ターゲット間でコピーする
Target Number (Left or c+Source) >c1
Enter のみ:コピー終了
Target Number (Destination) >2
source_path = "C:\TargetA\g1.c"
destination_path = "C:\TargetB\g1.c"
コピーします。[Y/N]y
TargetA の g1.c ファイルの内容をすべて TargetB の g1.c ファイルにコピーするときは、次の黄色い
文字のように入力していってください。 ただし、コピー元のターゲット番号を入力するときは、番号の
先頭に c を付けてください。
1
c1
2
表の内容が、new_* (例:new_1\A、ブラウザーによっては new_1\A)のときは、まだコミット(確定)してい
ないことを表しています。
コミット(確定)するには、
に、以下のような CommittedFile タグを追加します。
<CommittedFile hash="9a0baa2ed090b16796c55c156b5ffca9" revision="ModuleX\1\02\A"/>
この CommittedFile タグは、ModuleX モジュールに含まれる、ファイルの kind 番号= 1、リビジョン
番号= 02、ターゲットの description 記号= A、のファイルをコミットしたことを表しています。 その
ファイルの内容に対応する
は、9a0baa2ed090b16796c55c156b5ffca9 です。
更新が必要ないファイルについても、リビジョン番号を更新したコミットをしてください。 このコミットに
より、更新内容を反映する必要がなかったことが表わせます。 すべてのファイルがコミット済みであっ
ても、リビジョン番号が異なれば、まだ反映していないとして、Modified の列に * が表示されます。
下記の表は、TargetA の更新内容を TargetB とTagetC に反映した結果、TargetC には変更がなかっ
たので、TargetA と TargetB に対してのみ新しい CommittedFile タグを追加したときの表です。 リビジョン
番号が小さい TargetC を、リビジョン番号01 から 02 に上げるように、MD5 ハッシュ値が同じ下記のような
CommittedFile タグを追加してください。
追加する CommittedFile タグに近い内容は、98. 詳細を表示する [ShowDetail] を選ぶと開くファイルの
最後に書かれています。 この詳細ファイルは、97. リロード で更新されます。 ただし、リビジョン番号は、
すでにある番号と異なる番号に変更する必要があります。 また、ターゲットの description 記号は、正しく
修正しなければならないことがあります。
更新があったファイル(TargetA の g1.c)の更新内容を、他のターゲットのファイル(TargetC の g1.c)に
ターゲット間で比較するファイルの kind 値を入力してください。
1. kind 値 1 のファイルを比較する
2. kind 値 2 のファイルを比較する
:
97. 再スキャンして、一覧を表示する [Reload]
98. 詳細を表示する [ShowDetail]
96. HTML ファイルを保存する [SaveHTML]
99. 終了 [Exit]
kind 値または上記の番号またはコマンド名>1
-------------------------------------------------------------------------------
1)
Enter のみ:終了
c+番号:ターゲット間でコピーする
Target Number (Left or c+Source) >1
Target Number (Right) >3
1
1
3
または
Diff ツールで(TargetC を)同期させた後、リロード(Enter で戻ってから 97. Reload)すると、次のように
表示が変わります。
TargetB は、TargetA と同じ内容になるべきなので、後述のようにコピーして同期します。
y
(TargetB に)コピーして同期させた後、リロード(Enter で戻ってから 97. Reload)すると、次のように
表示が変わります。
CommittedFile タグを追加した後、リロード(Enter で戻ってから 97. Reload)すると、次のように表示が
変わります。 同期する前に比べてリビジョン番号が増えています。 Modified の列が空欄になったら、
同期完了です。 96. HTML ファイルを保存 [SaveHTML] しておくとよいでしょう。
<CommittedFile hash="a307d745bf90d586726f52a0689258fb" revision="ModuleX\1\02\B"/>
:
<Committed____ hash="a307d745bf90d586726f52a0689258fb" revision="ModuleX\1\01\B"/>
… 追加
… 既存
現在、同じハッシュ値の CommittedFile タグは、最新リビジョンにしか付けられません。
既存の CommittedFile タグのタグ名を変えるなどして無効にしてください。
を設定ファイルの HashList
が起動します。
反映して同期するときは、下記の黄色い文字のように入すると
が開くので、手動で同期してください。 前回、同期した内容の
タグに指定したときだけ、前回、同期したときの内容とも比較ができる