イラストAC フリー素材

2017年05月04日


管理者権限のコマンドプロンプトを開くバッチファイル

テストとして admin.bat として、windows ディレクトリにコピーしました。ファイル名を指定して実行からでもいいし、通常のコマンドプロンプトから実行してもかまいません。
@echo off
cmd "/c echo set o=CreateObject("Shell.Application"):o.ShellExecute "cmd","/k cd %USERPROFILE%","","runas",1 > %TEMP%\_.vbs & wscript.exe %TEMP%\_.vbs"
echo を使用して、VBScript のコードをファイルに書き込んで、そのコードを wscript.exe で実行して、結果的に管理者権限を持ったコマンドプロンプトを開きます。

※ 開いた時、USERPROFILE 環境変数の示す場所に CD しています。



posted by at 2017-05-04 01:52 | Comment(0) | 拡張コマンド | このブログの読者になる | 更新情報をチェックする

PATH 環境変数の内容をパス毎に改行して表示する pathx.bat ファイルの内容

内容は、cmd.exe /c と echo を使用して %temp% ディレクトリに VBScript のファイルを作成して実行しています。前半はシステム環境変数の PATH で、後半は ユーザ環境変数の PATH です。

以下の内容を pathx.bat の中に書き込んで作成し、windows ディレクトリの中にコピーします。そしてコマンドプロンプトから pathx とすると、登録されたパス毎に改行して表示されます。
@echo off
cmd /c echo Set ws=WScript.CreateObject("WScript.Shell"):Set wv=ws.Environment("SYSTEM"):pt=wv("PATH"):ad=Split(pt,";"):For I=0 To Ubound(ad):Wscript.echo ws.ExpandEnvironmentStrings(ad(I)):Next>%temp%\_.vbs&cscript.exe /NOLOGO %temp%\_.vbs
echo;
cmd /c echo Set ws=WScript.CreateObject("WScript.Shell"):Set wv=ws.Environment("USER"):pt=wv("PATH"):ad=Split(pt,";"):For I=0 To Ubound(ad):Wscript.echo ws.ExpandEnvironmentStrings(ad(I)):Next>%temp%\_.vbs&cscript.exe /NOLOGO %temp%\_.vbs






posted by at 2017-05-04 01:33 | Comment(0) | 拡張コマンド | このブログの読者になる | 更新情報をチェックする

2017年04月29日


コマンドプロンプトの規定値の設定とカスタマイズ



ここから設定すると、レジストリの以下の内容が変更されます。



ここで設定された内容は、今後開かれたコマンドプロンプトのデフォルトとして常に有効となり、それぞれのコマンドプロンプトの設定は、このレジストリのキーとしてデータが作成されます。

個別の設定は、『プロパティ』で設定します。コマンドプロンプト用に作成された実行ファイル(exe)のパス単位でレジストリに保存されます。

但し、ショートカットの場合は、ショートカット単位でショートカットの中に設定が保存されます。
ですから、レジストリに保存された設定は、そのキーをレジストリから削除するとコマンドプロンプト用アプリ毎の設定は破棄される事になります。 デフォルトとして設定すべきもの ▼ Windows7 ▼ Windows8 ▼ Windows10 ※ 簡易編集モード この設定を on にすると、コマンドプロンプト上のマウス操作でクリップボードへの操作が可能になります。ドラッグして選択してから右クリックでコピーができるようになります。加えて、コピーされだデータがある状態で右クリックすると、コマンドラインにそのデータが貼り付けられます。 どういうわけかこの便利な機能はデフォルトでは無効になっているので、この設定を変更する事は作業効率をアップさせます。 レジストリエントリは、QuickEdit で、1 にすると有効です。
Windows10 ではコマンドプロンプトでの編集で通常のエディタでのキー操作のショートカットが使えるようになっています。画面のサイズも自由に UI から変更可能になっており、行の折り返し選択では、実際に出力された内容のままクリップボードに対してデータを送る事ができます。
必要に応じて『プロパティ』から設定すべきもの ※ 背景色と前景色 過去の慣例に従って、背景が黒で文字が白(完全な白では無い)になっていますが、これでは画像を印刷した場合に黒い部分が多く、トナーの無駄となります。また、実際は背景を白くして文字を黒くしたほうがはるかに見やすい場合があります。 ※ ショートカットによるカスタマイズ ショートカットを作成すると、容易にオリジナルのコマンドプロンプトを作成できます。 ここでは、以下の変更を行っています。
1) cmd.exe /k prompt lightbox$G でプロンプトの変更
2) 作業フォルダで、初期ディレクトリの変更
3) アイコンの変更( %SystemRoot%\System32\shell32.dll より )
4) ショートカットの名称でタイトルを変更
さらに、このショートカットをパスが通ったディレクトリ( 例えば Windows ディレクトリ )にコピーしておくと、「名前を指定して実行」から、ショートカットの名称(ここでは lightbox)で実行する事ができます。 また、通常の大きさで少し狭く感じる場合は、「実行時の大きさ」で「最大化」を指定しておくと良いです。小さくするには、タイトルをダブルクリックで元に戻りますし、小さい時にダブルクリックしてやればまた大きくなります
posted by at 2017-04-29 18:52 | Comment(0) | 環境 | このブログの読者になる | 更新情報をチェックする

2014年11月28日


dir > log.txt >&2 で log.txt は作成されない

どうも、最後のほうから解析されるようですが、かっこを使うと log.txt は作成されます。

(dir > log.txt) >&2

後者は当然何も表示されませんが、前者はコマンドプロンプトに表示されます

関連する記事

Windows のコマンドプロンプトで、標準エラー出力へ出力する


posted by at 2014-11-28 00:37 | Comment(0) | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

コマンドプロンプト : Sleep( ミリ秒 ) する

現在は、秒単位ならば、timeout 5 と言うようにコマンドが使用できます
標準の Windows でスリープする方法は以下のようになります
REM バッチファイル内でも直接でも可能です

echo Wscript.Sleep 5000 > %TEMP%\sleep.vbs & cscript.exe %TEMP%\sleep.vbs
5000 は、単位がミリ秒ですから、5秒です。

同時に二つのプロセスが、sleep.vbs を作る事があると問題ありますが、
通常は大丈夫でしょう。また、ファイルを削除したければ、del を追加します

また、このような方法を使うと、バッチファイル内に VBScript のコードを書いて、
実行する事が可能となります。
以下は、GUID を取得してユニークな文字列を作成します
@echo off

echo strGuid = CreateObject("Scriptlet.TypeLib").Guid > %TEMP%\guid.vbs
echo strGuid = Replace(strGuid,"{", "") >> %TEMP%\guid.vbs
echo strGuid = Replace(strGuid,"}", "") >> %TEMP%\guid.vbs
echo strGuid = Replace(strGuid,"-", "") >> %TEMP%\guid.vbs
echo Wscript.Echo strGuid >> %TEMP%\guid.vbs

cscript.exe //Nologo %TEMP%\guid.vbs




posted by at 2014-11-28 00:16 | Comment(0) | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2013年12月11日


バッチファイル : IE8 でファイルをダウンロードして、ダウンロードしたディレクトリをエクスプローラで開く

この方法は、IE8 の時に検証した方法で、現在はダウンロードされたディレクトリがレジストリ内に無いようなので使用できません。ただ、バッチファイルでレジストリを参照する手法は使えると思います。

IE が最後にダウンロードで使用したディレクトリはレジストリ内にあるので、reg /query で該当場所を表示します。For コマンドで、プログラムの実行結果の標準出力を取り込めるので、ディレクトリ部分を取り出して変数にセットして、Explorer で実行します。

For のオプションとして、"skip=4 tokens=3 delims=	" を指定しています。delimsには、タブを指定しており、reg コマンドのデータの区切りがタブなので、3番目のトークンが目的の文字列です。そこで、tokens=3 となって、%%i にセットされます。該当行だけが必要なので、skip=4 となっています。

※ skip= は、実際の行数に対して指定します

Windows7 では、区切りがスペースに変わっており、他の仕様も微妙に変更されているので以下のようにする必要がありました

"skip=1 tokens=4 delims= "

※ delims= の右側はスペース1文字です。
-noframemerging は、存在する引数ですが何も指定しないと IE8 が終わってしまうので指定しています。iexplore.exe で、指定した URL からファイルをダウンロードして、ダウンロードしたディレクトリを開きます Microsoft ドキュメント Internet Explorer Command Line Options
@echo off
start /wait iexplore.exe -noframemerging http://lightbox.on.coocan.jp/download/WinOfSql102.lzh
FOR /F "skip=4 tokens=3 delims=	" %%i IN ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer" /v "Download Directory"') DO (
	Explorer /e,%%i
)

関連する記事

IE11 でファイルをダウンロードしてその終了を待つく
2008/7/28 - Internet Explorer 8 と信頼性

※ For コマンドの詳細は、For /? で表示されます


posted by at 2013-12-11 03:15 | Comment(0) | バッチファイル | このブログの読者になる | 更新情報をチェックする

2010年07月18日


コマンドプロンプト(cmd.exe)起動時の長いプロンプトを短くする : 起動時に最初に実行するコマンドの登録

コマンドプロンプトは起動されると通常カレントディレクトリをプロンプトに表示しますが、深い階層での実行になると、ヘタをするとプロンプトだけで折り返してしまう可能性すらあります。以下のようにレジストリに登録しておけば、実行の最初だけディレクトリを表示してプロンプトは > のみになります。

また、本来のプロンプトが必要であれば、cmd.exe /D とすれは良いだけです。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"AutoRun"="echo CUR : %CD% & prompt $G"


以下はアンインストール用の .reg ファイルです
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"AutoRun"=-


関連する記事

.regファイルでレジストリのキーや値を削除



posted by at 2010-07-18 22:49 | Comment(0) | 環境 | このブログの読者になる | 更新情報をチェックする

2010年07月15日


サービスの「手動 / 自動 / 無効」の変更

※ この例は、タスクスケジューラの設定例です。
※ start= の後ろにスペースが必要である事に注意して下さい。
※ Schedule は、サービス名です。表示名ではありません
※ 成功すると、[SC] ChangeServiceConfig SUCCESS と表示されます

手動
sc config Schedule start= demand
自動
sc config Schedule start= auto
 
無効
sc config Schedule start= disabled





タグ:サービス
posted by at 2010-07-15 17:49 | Comment(0) | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2010年07月12日


コマンドプロンプトの & と && と ||

& は、VBScrpt からのイメージでは「連結」ですが、この場合は同じような意味で、コマンドを一行で複数実行する方法ですが、&& と || にはさらに
条件が付加されます。

&&

&& 記号の前にあるコマンドが正常に終了した場合にのみ、後ろにあるコマンドを実行するために使います。1 つ目のコマンドが実行され、そのコマンドが正常に終了
した場合にのみ、2 つ目のコマンドが実行されます。  ここで「正常」とは、コマンドのエラーコード が 0 です

||

|| 記号の前にあるコマンドが失敗した場合にのみ、後ろにあるコマンドを実行するために使います。1 つ目のコマンドが実行され、そのコマンドが失敗した場合(コマンドから返されるエラーコードが 0 よりも大きい場合)にのみ、2 つ目のコマンドが実行されます。 

以下は、エラーコードをバッチファイル内で実現する exit /B を使ってテストしています。
@echo off

echo 最初が成功したら次も実行
pause
Call :normal && dir

echo 最初が失敗したら次も実行
pause
Call :error || dir

echo 以下はどちらも dir が実行されない
pause
Call :normal || dir
Call :error && dir

goto :end

:normal
exit /B 0


:error
exit /B 1


:end





posted by at 2010-07-12 23:28 | Comment(0) | バッチファイル | このブログの読者になる | 更新情報をチェックする

2010年07月11日


リダイレクト : 空のファイルを作成する

nul は 特別な予約語で、空のファイルを意味します。
type nul > empty.txt
この場合は標準入力に利用したファイル作成ですが、以下のように
標準出力に利用すると表示結果を無効にする事ができます
dir > nul
また、リダイレクト先には、エクスプローラでは入力できないファイルを
指定できるので、以下のような処理も可能です
echo DirectoryIndex index.html index.htm index.cgi> .htaccess
type .htaccess_base > .htaccess



posted by at 2010-07-11 16:08 | Comment(0) | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2010年07月09日


バッチファイル自身が存在するディレクトリを使用して CSCRIPT.EXE を使う

バッチファイル内で、%~dp0 は、バッチファイル自身が存在するディレクトリ
に置換されるので、そのバッチファイルと同じディレクトリに .vbs( または .wsf )
を置いて、コマンドプロンプト用の VBScript を起動する為のコマンドファイルと
して使う事ができます。

VBScript 内で記述される Wscript.Echo は、Wscript.exe で実行されてしまうと、
一回の表示毎にメッセージボックスが表示されて、処理が中断しますが、Cscript.exe
で実行する場合は、コマンドプロンプトに表示されて処理が継続されます。このよう
に、CScript.exe で実行する事を前提とした処理は、バッチファイルで起動してやる
と良いです。
@echo off
cscript.exe //NOLOGO "%~dp0vbspathlist.vbs"

VBScript 側では以下のようにすると、Wscript.exe での実行を抑制する
事ができます。
str = WScript.FullName
str = Right( str, 11 )
str = Ucase( str )
if str <> "CSCRIPT.EXE" then
	Wscript.Echo "スクリプトを直接実行しないで下さい"
	Wscript.Quit
end if



posted by at 2010-07-09 11:29 | Comment(0) | バッチファイル | このブログの読者になる | 更新情報をチェックする

更新されたファイルのみを一括でバックアップする為のコピーコマンド( bakcopy.bat )

bak コピー元ディレクトリ コピー先ディレクトリ
※ xcopy で新しいファイルのみをコピーします
※ コピー先ディレクトリは存在しない場合は作成されます

for 構文は引数の無い場合のチェックをしているだけで、
エラーが出ない事が解っている場合は必要ありません
bakcopy.bat
@echo off
for /F "tokens=1" %%i in ('echo %1') do (
	if "%%i"=="ECHO" (
		goto error1
	)
)
for /F "tokens=1" %%i in ('echo %2') do (
	if "%%i"=="ECHO" (
		goto error2
	)
)
xcopy.exe %1 %2 /D /E /C /S /Y /I
goto end 


:error1
echo bak コピー元ディレクトリ コピー先ディレクトリ
echo 引数1は、コピー元ディレクトリです
goto end

:error2
echo bak コピー元ディレクトリ コピー先ディレクトリ
echo 引数2は、コピー先ディレクトリです
goto end

:end 



posted by at 2010-07-09 10:56 | Comment(0) | 拡張コマンド | このブログの読者になる | 更新情報をチェックする

「ファイル名を指定して実行」からコンソールアプリケーションを使う

そもそも、「コンソールアプリケーション」とは、コマンドプロンプトが表示されてからでないと実行されません。また、処理が終わるとコマンドプロンプトに制御が移動するので、そのコマンドプロンプトが閉じてしまうと結果の表示を見る事すらできません。ですから、コンソールアプリケーションを実行するには3つのパターンがあります。

1) cmd.exe を実行してから

「ファイル名を指定して実行」から cmd.exe を実行してコマンドプロンプトを開いてから、目的のコマンドを実行する

2) cmd.exe /k コマンド を使う

/k オプションを付けて、コマンドを cmd.exe に実行させると、コマンドが実行された後にコマンドプロンプトが開いたままになります。


3) cmd.exe /c コマンド & pause を使う

/c オプションを付けて、コマンドを cmd.exe に実行させると、コマンドが実行された後にコマンドプロンプトは閉じてしまいますが、& でコマンドを継続できるので、& pause を付加する事によって、コマンドを実行した後に pause が実行されてキー入力待ちになり、何かキーを入力するとコマンドプロンプトが閉じま
す。

実行例

cmd /c ipconfig /all & pause


posted by at 2010-07-09 10:15 | Comment(0) | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2010年07月07日


ファイルのダンプ( vdump )

ブラウザでダウンロード
VBScript だけで作ったファイルの16進数ダンプツールです。
※ wscript 経由で実行はできないようにしてあります
          0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
--------------------------------------------------------------------------
00000000 50 4B 03 04 14 00 00 00 08 00 37 03 E7 3C 9C 49  PK........7.・廬
00000010 75 ED 1C 02 00 00 AF 05 00 00 0A 00 00 00 72 65  u.....ッ.......re
00000020 61 64 6D 65 2E 74 78 74 B5 54 41 6B 13 41 14 BE  adme.txtオTAk.A.セ
00000030 2F EC 7F 18 7A B2 39 08 F5 E0 51 DC E4 20 C5 A0  /...zイ9..濂ワ・ナ.
00000040 50 41 0B 29 15 43 6B 0C 58 13 9B 6D 2C E8 C1 F9  PA.).Ck.X.嬶,霖.
00000050 9E 87 A6 C9 6E D2 6C E2 7A 10 A9 45 2A 55 8A 68  梏ヲノnメl窘.ゥE*U撹
00000060 A9 21 DA 8A 94 46 4D C8 5E F4 22 E8 C1 83 1E 5A  ゥ!レ株FMネ^."霖・Z
00000070 2A 6C FF 81 33 9B C6 ED A1 ED 65 D3 B9 0C 33 F3  *l.・嵌.。.eモケ.3.
00000080 E6 7B DF 7C F3 BD 17 0A 30 54 25 C4 2E 87 2F 45  諚゚|.ス..0T%ト../E
00000090 26 93 69 9D A1 C1 48 A7 B3 14 A1 3C DA 6C 6C 6A  &妬擅チHァウ.。<レllj
000000A0 22 2D 8E 03 0C 55 51 95 AC 84 61 7D 3E 2E A5 69  "-・.UQ噴・}>.・i
000000B0 B8 4F A4 E2 9A BF 37 70 BA 94 2C 55 E8 2A 59 94  クO、笞ソ7pコ・U・Y
000000C0 AD 8E 98 8B 70 8D 0C 16 F0 13 35 1E 96 20 41 69  発侍却・...5.・Ai
000000D0 84 58 F5 BC 9D C5 97 6E 46 16 14 70 A0 9F 79 0F  Ч.シ敘溶F..p.毓.
000000E0 3B 19 BF A6 AB CA 29 B1 8A 67 BC B5 98 7B 41 57  ;.ソヲォハ)ア拡シオ・AW
000000F0 90 B4 68 98 12 3C 46 F9 A0 68 78 8D B6 B5 8B 0D  清h・<F..hx左オ・
          0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
--------------------------------------------------------------------------
00000100 B4 FF 0B EE 5A AF F0 96 AE 53 98 0A 74 81 12 34  エ...Zッ.粍S・t・4
00000110 6B FD 42 B3 3C 25 24 DF E4 1A DE 8B C8 BD 33 55  k.Bウ<%$゚・゙曲ス3U
00000120 91 A7 68 CA 4F 83 5B 6E 61 15 9B B9 77 58 C1 02  息hハOゼna.峪wXチ.
00000130 0F CF 6C 57 5A D6 20 9A 70 B8 76 25 79 6B 2C 75  .マlWZヨ 嗔クv%yk,u
00000140 27 C3 BA F7 3A B7 0E CE 4D 43 94 E1 31 1F A9 27  'テコ.:キ.ホMC批1.ゥ'

************************************************************
* VBSCript で ファイルの dump
************************************************************

vdump "ファイルのパス" で、ファイルの16進数ダンプ表示を行います。


************************************************************
* 必要なファイル 
************************************************************
1) vdump.bat
2) vbsdump.vbs

************************************************************
* インストール
************************************************************
この二つのファイルを同じディレクトリ内に置いて、そのディレク
トリにパスを通して下さい。一般的には、Windows ディレクトリに
この二つのファイルをコピーして下さい

************************************************************
* アンインストール
************************************************************
この二つのファイルを削除して下さい

************************************************************
* その他
************************************************************
大きなファイルは vdump "ファイルのパス" | more とするか、
vdump "ファイルのパス" > dump.txt として、dump.txt をテキスト
エディタで表示して下さい。vdump "ファイルのパス" | more 実行時
の強制終了は、q キー です


■ 著作権その他

このプログラムはフリーです。どうぞ自由に御使用ください。
著作権は作者である私(lightbox)が保有しています。
また、本ソフトを運用した結果については、作者は一切責任を
負えせんのでご了承ください。



posted by at 2010-07-07 00:44 | Comment(0) | 拡張コマンド | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します