タグ:VBScript ( 57 ) タグの人気記事
[VBScript] 「アーティスト名 - 曲名」ファイルを「アーティスト名」フォルダ/「曲名」ファイルに分ける
こんばんワイン。どーもボキです。

こういう平置きされたファイルをフォルダに分けるスクリプト。
特に使い勝手がないだろうが、メモとして。
a0021757_1461320.gif
If WScript.Arguments.Count = 0 Then WScript.Quit    ' フォルダドロップでない

Set objFS = CreateObject("Scripting.FileSystemObject")
s = WScript.Arguments(0)
If Not objFS.FolderExists(s) Then WScript.Quit ' フォルダでない


' フォルダ内のファイルサーチ
Set Folder = objFS.GetFolder(s)
For Each File In Folder.Files: Do
s = File.Name
i = InStr(s, " - ")
If i <= 1 Then Exit Do ' アーティスト名が不明

dnam = LTrim(Left(s, i-1))
dpth = Folder.Path &"\"& dnam &"\"
fnam = Right(s, Len(s) -i-2)

On Error Resume Next ' CreateFolderのエラー回避
objFS.CreateFolder(dpth)
objFS.MoveFile File.Path, dpth & fnam
On Error GoTo 0
Loop Until 1: Next

MsgBox "
終了"



[PR]
by yozda | 2013-04-29 01:48 | プログラミング | Trackback | Comments(0)
[VBScript] メモ帳のフォントを「MS ゴシック」「9pt」「装飾なし」にする
今朝は、朝から頭痛が痛い。どーもボキです。

レジストリを書き換えて、メモ帳のフォントを「MS ゴシック」「9pt」「装飾なし」に書き換えるスクリプト。
プロポーショナルフォントを使うやつぁ、わしゃSEとして認めんけぇの。
key  = "HKCU\Software\Microsoft\Notepad\"
font = "MS ゴシック"
Set objWS = CreateObject("WScript.Shell")
r = objWS.RegWrite(key & "lfFaceName", font, "REG_SZ") ' フォント
r = objWS.RegWrite(key & "lfItalic", 0, "REG_DWORD") ' イタリック 0/1
r = objWS.RegWrite(key & "lfWeight", 400, "REG_DWORD") ' ボールド 400/700
r = objWS.RegWrite(key & "lfStrikeOut", 0, "REG_DWORD") ' 取り消し線 0/1
r = objWS.RegWrite(key & "lfUnderline", 0, "REG_DWORD") ' 下線 0/1
r = objWS.RegWrite(key & "iPointSize", 90, "REG_DWORD") ' 9pt×10



[PR]
by yozda | 2012-10-21 18:19 | プログラミング | Trackback | Comments(0)
[VBScript] メッセージダイアログを実現する
こんにチワワ。ドーモボキです。

[VBScript] ラジオボタンダイアログを実現する その3

ラジオボタンダイアログのソースを利用して、メッセージダイアログを作成した。

実行ソース
r = MessageDlg("タイトル","キャプション","アイテム0,アイテム1,アイテム2")
a0021757_21263884.gif

戻り値は、押されたボタンのインデックス (0~)。
[×]で終了した場合は、-1。

◆ソース◆
[PR]
by yozda | 2012-09-22 18:08 | プログラミング | Trackback | Comments(0)
[VBScript] ラジオボタンダイアログを実現する その3
こんにチワワ。どーもボキです。

前回の記事 ⇒ [VBScript] ラジオボタンダイアログを実現する その2

ラジオボタンダイアログを改良した。タイトルバーに「http:/// -」を出なくした。

実行ソース
r = RadioGroupBox("タイトル","キャプション","アイテム0,アイテム1,アイテム2",1)
a0021757_21244099.gif
戻り値は、[OK]ボタンが押された場合は項目インデックス (0~)。
[キャンセル]ボタン や [×]で終了した場合は、-1。

RadioGroupBox_MaxCount = 3
とすることで、項目が指定数(この場合は3)以上になった場合、プルダウンメニュータイプに変更できる。
a0021757_21243675.gif





◆ソース◆
[PR]
by yozda | 2012-09-22 17:37 | プログラミング | Trackback(2) | Comments(10)
[VBScript] 右クリックメニューのカスタマイズ 他
こんばんワイン。どーもボキです。

ファイルやフォルダを右クリックした際に表示されるメニューをカスタマイズするスクリプト。
出来ることは以下。
a0021757_2243191.gif
実行結果イメージ
ファイル 右クリックメニュー
 ・選択ファイルの親フォルダ基準ででエクスプローラを開く
 ・選択ファイルの親フォルダ基準でコマンドプロンプトを開く

フォルダ 右クリックメニュー
 ・選択ファイルの親フォルダ基準ででエクスプローラを開く
 ・選択ファイルの親フォルダ基準でコマンドプロンプトを開く

拡張子がないファイルのテキストファイル関連付け

(サクラエディタがインストール済みの場合、以下をサクラエディタに関連付け)
 ・全ファイルの右クリックメニューにサクラエディタで編集を追加
 ・IEのソースエディタ
 ・VBScriptの編集エディタ
Set objWS = WScript.CreateObject("WScript.Shell")
Set objFS = CreateObject("Scripting.FileSystemObject")

' サクラエディタのインストールパス
cmd = "サクラエディタで開く"
fpth = ""
On Error Resume Next ' 未インストールへの対応 (RegReadでエラーになる)
s = Replace(objWS.RegRead("HKEY_CLASSES_ROOT\Applications\sakura.exe\shell\open\command\"),"""","",1,-1,1)
fpth = Left(s,InStr(s,"
%1")-1)
On Error GoTo 0

' エディタのパスを設定
If Not objFS.FileExists(fpth) Then
cmd = "
メモ帳で開く"
fpth = "
notepad"
End If
'--------------------------------------------------------------------------------------------------------
' ファイル 右クリメニュー
root = "
HKEY_CLASSES_ROOT\*\shell\"

key = root & cmd & "
\"
val = cmd & "
(&E)"
r = objWS.RegWrite(key, val, "
REG_SZ")
key = key & "
command\"
val = "
""" & fpth &""" ""%1"""
r = objWS.RegWrite(key, val, "
REG_SZ")

cmd = "
エクスプローラ"
key = root & cmd & "
\"
val = cmd & "
(&X)"
r = objWS.RegWrite(key, val, "
REG_SZ")
key = key & "
command\"
val = "
explorer /e , ""%1\.."""
r = objWS.RegWrite(key, val, "
REG_SZ")

cmd = "
エクスプローラ (このフォルダ基準)"
key = root & cmd & "
\"
val = cmd & "
(&X)"
r = objWS.RegWrite(key, val, "
REG_SZ")
key = key & "
command\"
val = "
explorer /e ,/root, ""%1\.."""
r = objWS.RegWrite(key, val, "
REG_SZ")

cmd = "
コマンドプロンプトを開く"
key = root & cmd & "
\"
val = cmd & "
(&W)"
r = objWS.RegWrite(key, val, "
REG_SZ")
key = key & "
command\"
val = "
cmd.exe /k ""cd %1\.."""
r = objWS.RegWrite(key, val, "
REG_SZ")

'--------------------------------------------------------------------------------------------------------
' フォルダ 右クリメニュー
root = "
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\"

cmd = "
エクスプローラ (このフォルダ基準)"
key = root & cmd & "
\"
val = cmd & "
(&X)"
r = objWS.RegWrite(key, val, "
REG_SZ")
key = key & "
command\"
val = "
explorer /e ,/root, ""%1"""
r = objWS.RegWrite(key, val, "
REG_SZ")

cmd = "
コマンドプロンプトを開く"
key = root & cmd & "
\"
val = cmd & "
(&W)"
r = objWS.RegWrite(key, val, "
REG_SZ")
key = key & "
command\"
val = "
cmd.exe /k ""cd %1"""
r = objWS.RegWrite(key, val, "
REG_SZ")

'--------------------------------------------------------------------------------------------------------
' 拡張子のないファイルを関連付け
fpth_bat = objFS.GetSpecialFolder(2) &"
\tmp.bat"
Set txt = objFS.OpenTextFile(fpth_bat,2,True)
txt.WriteLine "
assoc .=txtfile"
txt.Close
r = objWS.Run(fpth_bat,0,True)
objFS.DeleteFile(fpth_bat)

If fpth = "
notepad" Then WScript.Quit

' IEソース表示エディタの変更
key = "
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\View Source Editor\Editor Name\"
val = fpth
r = objWS.RegWrite(key, val, "
REG_SZ")

' テキストの編集用エディタを変更
key = "
HKEY_CLASSES_ROOT\txtfile\Shell\Edit\command\"
val = fpth & "
%1"
r = objWS.RegWrite(key, val, "
REG_SZ")

' VBScriptの編集用エディタを変更
key = "
HKEY_CLASSES_ROOT\VBSFile\Shell\Edit\command\"
val = fpth & "
%1"
r = objWS.RegWrite(key, val, "
REG_SZ")



[PR]
by yozda | 2012-06-25 22:08 | プログラミング | Trackback | Comments(0)
拡張子のないファイルをテキストファイルとして認識させる
こんにチワワ。どーもボキです。

WinXPならば、フォルダ メニュー > ツール > フォルダオプション > ファイルの種類
「.」のみの拡張子を新規登録し、それのエディタに関連付ければいい。

しかし、Win7では使えない。(拡張子の関連付けメニューがない)

WinXPにおいても、操作で設定が必要だったので、
レジストリやスクリプトでどうにかできないものか以前から調べていた。やっと見つけた。カンタンだわ。

コマンドプロンプトで以下を実行するだけ。
Win7では、管理者として実行しないとダメかもしれんね。
assoc .=txtfile
ここの方法を使えば、VBSciptでも出来なくはない。
しかし、assoc実行時のコマンドプロンプトをユーザが閉じるまでスクリプトが終わらない。

素直にコマンドプロンプトやbatファイルで処理させたほうがいい。


[PR]
by yozda | 2012-06-23 15:56 | パソコン全般 | Trackback | Comments(0)
[VBScript] Delphi TIniFile風のINIファイル処理クラス
こんにチワワ。どーもボキです。

以前紹介したTIniFileクラスを、前回紹介したTListクラスを利用して、改良した。
(TIniFileクラスのソースは、記事の左下)

実行ソース
Set ini = New TIniFile

ini.Load(fpth) ' 読み込むINIファイルのフルパス

r = ini.ReadSections(slst)
' Functionのため、戻り値を受け取らないと正しく処理されない
' 戻り値を受け取らないのなら、ini.ReadSections slst と書く

For i = 0 To slst.Count -1
dprintf(slst(i))
r = ini.ReadSectionValues(slst(i), tlst)
For j = 0 To tlst.Count -1
dprintf(vbTAB & tlst(j))
Next
Next
a0021757_1517960.gif
IrfanViewのINIファイルを読み込ませたところ


TIniFileクラスのソース
[PR]
by yozda | 2012-06-23 15:25 | プログラミング | Trackback | Comments(0)
[VBScript] VBSへのドロップ実行ではホストやカレントディレクトリが異なる
おはヨーグルト。どーもボキです。

VBSファイルを実行するとき
「ダブルクリックで実行する場合」 と 「ドラッグ&ドロップで実行する場合」 とでは、
実行環境条件が多少異なる。

以下のソースファイルは「D:\DEV\VBS」に保存した。これを実行するとよく分かる。
Set objWS = CreateObject("WSCript.Shell")
MsgBox _
"ホスト" & vbTAB & ": " & WScript.FullName & vbCRLF &_
"カレント"& vbTAB & ": " & objWS.CurrentDirectory _
,64,"ホスト と カレントDir"
a0021757_76061.gif
ダブルクリックで実行した場合
ホストは設定値のまま、VBS保存フォルダで実行される

a0021757_76242.gif
ファイルドロップで実行した場合
ホストはWScriptとなり、ログインIDルートフォルダで実行される


ドロップ実行の場合、CScriptホストを指定しても、WScriptホストで実行される。
CScriptで実行したい場合は、引数を引き継いだ上で、指定したホストで実行するを利用するとよい。


[PR]
by yozda | 2012-06-23 07:09 | プログラミング | Trackback | Comments(0)
[VBScript] Delphi TStringList風のリストクラス
こんばんワイン。どーもボキです。

VBScriptは、文字列処理が得意だ。
Split や UBound を利用すれば、CSVファイルの処理も簡単に実現できる。

テキストファイルの処理をさらに簡単にするため、DelphiのTStringList風のクラスを作ってみた。
このクラスを使ったソースを実行すると、下画像のような実行結果となる。
a0021757_0191419.gif
Set List = New TList

' カンマ区切りで文字列を格納
List.Text(",") = "0,1,2,3,11,22,33"

' Index=1を""12.3""に更新"
List.Items(1) = "12.3"

' Index=0に4.56を挿入"
r = List.Insert(0, 4.56)

' List.Count, List(.Item)で格納値を取得
For i = 0 to List.Count-1
WScript.Echo vbTAB & "List("&i&") = "&List(i)
Next

' 文字列でソート"
List.Sort

' 数値でソート"
List.Numeric = True
List.Sort

' ファイル保存"
DPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") &"\" ' デスクトップパス
s = Replace(Now,"
/","")
List.Save(DPath & Mid(s,3,InStr(s,"
")-3) & ".csv")


TListクラスのソース
[PR]
by yozda | 2012-06-20 00:21 | プログラミング | Trackback | Comments(0)
[VBScript] Craving Explorerの動画変換の終了後、PCをスタンバイにする
おはヨーグルト。ドーモボキです。

[VBScript] 指定プロセスのCPU使用率を監視し、アイドル状態になるまで待つ
 ↑
このときに考えてた、Craving Explorerの動画変換完了時にPCをスタンバイにするスクリプトを考えた。

指定した名前のプロセスが存在するか調べる
PCをスタンバイにする
引数を引き継いだ上で、指定したホストで実行する (処理メッセージを表示させるため)
 の組み合わせ。超、カンタン&シンプル。
SetScriptHost("CScript")    ' CScriptホストで実行 (変換メッセージを出すため)

Set objWS = CreateObject("WScript.Shell")

Count = 1
While 1
' 1sec間スリープ
WScript.Sleep 1000

' ffmpeg.exeの有無を調べる
If ProcessExists("ffmpeg.exe") Then
If Count <> 0 Then WSCript.StdOut.Write vbCRLF & "Wait" Else WScript.StdOut.Write "."
Count = 0
Else
If Count = 0 Then WSCript.StdOut.Write vbCRLF & "Check" Else WScript.StdOut.Write "."
Count = Count +1
End If

' 30sec間 ffmpes.exeが実行されていないなら変換終了 → スタンバイ
If Count = 30 Then
If objWS.PopUp("スタンバイにします",3,"変換終了",1+32) <> vbCancel Then
objWS.Run "rundll32 powrprof.dll,SetSuspendState"
End If
WScript.Quit
End If
WEnd

'-------------------------------------------------------------------------------
' プロセスが起動しているか調べる
Function ProcessExists(ProcessName)
Dim Service,QfeSet,Qfe,r

Set Service = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer
Set QfeSet = Service.ExecQuery("Select * From Win32_Process Where Caption='" & ProcessName & "'")

r = 0
For Each Qfe In QfeSet
r = Qfe.ProcessId
Exit For
Next

ProcessExists = r <> 0
End Function

' -------------------------------------------------------------------------------
' 実行ホストを切り替える
Sub SetScriptHost(HostName)
If InStr(LCase(WSCript.FullName),LCase(HostName)) <> 0 Then Exit Sub

s = HostName & " """ & WScript.ScriptFullName & """"
If WScript.Arguments.Count > 0 Then
For i = 0 To WScript.Arguments.Count -1
s = s &" """ & WScript.Arguments.Item(i) & """"
Next
End If
CreateObject("WScript.Shell").Run s
WScript.Quit
End Sub


[PR]
by yozda | 2012-06-16 11:51 | プログラミング | Trackback(1) | Comments(0)