SQLの窓 イラストAC フリー素材

2017年05月20日

コマンドプロンプトから CD コマンドで『ワイルドカード』を使って移動する



深い階層でコマンドプロンプトを開けるには、エクスプローラでそのフォルダを選択して、SHIFT キーを押しながら右クリックする方法が一番確実ですが、コマンドプロンプト内からも、良く使うフォルダのパターンを知っておればこちらのほうが速い場合もあります。
C:\tools>cd \u*s\l*\d*
C:\Users\lightbox\Desktop>cd \u*s\l*\do*
C:\Users\lightbox\Documents>cd \u*s\l*\dow*
C:\Users\lightbox\Downloads>cd \u*s\l*\p*
C:\Users\lightbox\Pictures>cd \u*s\l*\ap*\l*\go*\c*\u*
※ 最後のフォルダは、Google Chrome のユーザデータフォルダです (C:\Users\lightbox\AppData\Local\Google\Chrome\User Data) 自分の環境では、Users の前に user があるので、cd \u*s となっていますが、一般的な環境では、cd \u* で問題ありません。次の階層の l* は、ここでのユーザ名 が lightbox なので、環境によって変わります。後は、共通で使えるはずです。 Program Files は注意 cd \p* が使え無いので、cd \pr* になります。以下は MySQL の bin フォルダです (C:\Program Files\MySQL\MySQL Server 5.7\bin) cd \pr*\my*\*se*\b*
posted by at 2017-05-20 12:09 | Comment(0) | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2014年11月26日

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

普通に echo で表示すると、標準出力へ表示されます。しかし、もう一つ表示先があって、それを標準エラー出力と言い、通常そこへはエラーメッセージ等を表示して区別する目的で存在します。

しかし、例え意図的に標準エラー出力に表示しても、コマンドプロンプトには両方表示されるので、区別するにはそれなりの書き方があります。

1) 標準エラー出力へ表示する

▼ test.bat
@echo off
echo 標準エラー出力へ >&2
echo 標準エラー出力へ 1>&2
echo 標準出力へ

一つ目と二つ目が標準エラー出力へ表示されます。 > と 1> は同じ意味で、標準出力ですが、その相手として通常はファイルを指定したりしますが、かわりに &2 として標準エラー出力へと出力し直す形です。( 但しこの場合、間にスペースは書けません )

2) 標準エラー出力のみ表示する
test.bat 1> nul

test.bat の標準出力のみをを、何も無い nul へ表示します( 結果、コマンドプロンプトに標準出力への内容は表示されません )

3) どちらも表示しない
test.bat 1> nul 2> nul

または

test.bat 1> nul 2>&1

一つ目は両方とも nul へ。二つ目は、標準エラー出力を標準出力に出力しなおしているので結局表示されません


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

2014年05月06日

MySQL : バックアップ : mysqldump --host=localhost --user=root --password=パスワード データベース

mysqldump.exe で処理する場合、-- 構文と - 構文がありますが、パスワードを記述してバッチ処理を可能にする為には、-- 構文を使用する必要がありました。- 構文では、パスワードは最後のオプションにする必要があり、かつ、パスワードは入力でした。

▼ -- 構文

mysqldump --host=localhost --user=root --password=パスワード データベース > %temp%\dump.sql

▼ - 構文

mysqldump -h localhost -u root -p データベース > %temp%\dump.sql
リダイレクト先を %temp% としているのは、インストール先のディレクトリをパスに登録せずに行っているからで、C:\Program Files\MySQL\MySQL Server 5.6\bin は管理者権限でないと書き込みができません。


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

2014年02月20日

バッチファイル : クリップボードからデータを読み込んで表示

クリップボードのデータを読み込んでいるのは、mshta.exe の引数内の VBScript のコードです。

clipboardData オブジェクトの getData メソッドで読み込んで、それをコマンドプロンプトの世界へ戻す為に標準出力に書き込んでいます。

コマンドプロンプトの世界でそれを取り出すには、標準入力を読み込む事のできるコマンドが必要なのですが、通常コマンドでは more か sort くらいしか無いので 2 行目で テンポラリフォルダに VBScript のコードを出力しています。その VBScript のコードを cscript //nologo で読み込んで使用しています(//nologo は、cscript が標準出力になにも出力しないようにする為のもの)。この結果、標準入力に渡ったデータをパイプ経由で入力して、Wscript.Echo で表示しています。

mshta.exe は、本来 hta アプリケーションを実行させるものですが、引数の使用が URL なので、URL と同等の vbscript: で直接処理を実行させています。

2 行目では、 cmd.exe /c "" という構文で、"" の中にコマンド一式を記述する事によって、特殊記号のエスケープの問題が出ないように考慮しています。

※ 注意 : & は ^ でエスケープする必要があります
@echo off
cmd.exe /c "echo Dim Input:Input="":Do While Not WScript.StdIn.AtEndOfStream:Input=Input^&WScript.StdIn.ReadAll:Loop:WScript.Echo Input > %temp%\_.vbs"
mshta.exe "vbscript:Execute("str=window.clipboardData.getData(""text""):CreateObject(""Scripting.FileSystemObject"").GetStandardStream(1).Write(str^&""""):close")" | cscript //nologo %temp%\_.vbs



posted by at 2014-02-20 23:58 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2013年12月30日

バッチファイルテクニック : 他のコマンドの標準出力の結果で処理を分岐する

バッチファイルには古くからお世話になっていますが、その長い歴史で最も特殊な機能です。もちろん、本家( Unix )にはそれこそ昔からあるのですけれど。

まず、標準出力になにがしかを出力するコマンドを作る必要があります。VB.NET で作成して、vbc.exe でビルドして使えはいいのですが、もっと簡単に VBScript を使います。ここでは、ini.vbs というスクリプトを元に話をすすめていきます。

ini.vbs はini ファイルの中の値を取り出す簡単なスクリプトです。例えば php.ini の中に
[PHP]
error_reporting  =  E_ALL & ~E_NOTICE & ~E_STRICT
と書かれているとすると、cscript.exe //NOLOGO ini.vbs "php.ini" php error_reporting で、E_ALL & ~E_NOTICE & ~E_STRICT を標準出力に出力します。 ですが、このままではコマンドとして使うには cscript.exe を毎回書く必要があるので、同じディレクトリにini.bat を作成して、以下のように書きます。
@echo off
cscript.exe //NOLOGO "%~dp0ini.vbs" "%1" %2 %3
そして、この二つのファイルをパスの通ったディレクトリに置くと、"ini" というコマンドの出来上がりです。 で、このコマンドを使ったバッチファイルが以下のようになります
@echo off
SETLOCAL
SET ini_var=
For /F "delims=" %%i in ('ini.bat "c:\php\php.ini" php error_reporting') do (
	if "%%i"=="E_ALL & ~E_NOTICE & ~E_STRICT" (call :type1) else (call :type2)
)

if "%ini_var%"=="" (call :type3)
goto :end

:type1
echo ******************
echo エントリ一致
echo ******************
SET ini_var=type1
exit /b

:type2
echo ******************
echo エントリ不一致
echo ******************
SET ini_var=type2
exit /b

:type3
echo ******************
echo エントリなし
echo ******************
exit /b

:end
ENDLOCAL

SETLOCAL は、ENDLOCAL までの間に使った環境変数をクリアして元に戻すという、バッチファイルのためにある都合のいいコマンドです。

こうしておくと、いろいろ都合のいい処理を if "%環境変数%"=="内容"として実行が可能になりますし、内容を直接実行はそもそもの機能です。

(例)
SET MYVAR=DIR
%MYVAR%

しかし、この処理のメインは 'ini.bat "c:\php\php.ini" php error_reporting' で、このコマンドが標準出力に表示した結果が %%i にセットされます。これを使って、内部サブルーチンを呼び出しています。

"delims=" は、デフォルトだと空白が区切り文字になってしまって、値に空白が含まれると変数に正しく入らないので、区切文字をなしにする書き方です。

その結果、戻された値と E_ALL & ~E_NOTICE & ~E_STRICT が等しい場合は type1 の処理を実行し、一致しなければ type2 の処理を実行します。エントリが無い場合や、エントリの値が空白の場合は、type3 の処理を実行します。

ちなみに、Microsoft の Visual Studio の中にバッチビルド用のバッチファイルがあるのですが、その中でこんな感じの処理をしています。あっちでは、reg.exe でレジストリの中の内容によって処理変えてましたが、整理するとこういう事だったわけです。

※ For は複数のループなので、標準出力の結果が複数行の場合は、複数回処理されます



posted by at 2013-12-30 05:44 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2010年07月23日

コマンドプロンプトの背景色は、やっぱ「白」でしょう


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

Cmd_ex_07

理由は、印刷する時にトナーが少なくて済むからですが、そんな場合は通常印刷前に画像を加工する事もあるので、それなら最初から白でいいと思うのです。

紙代もバカにならないので、PrimoPDF 等の仮想プリンタドライバを使う理由にも少し含まれています。

関連するリンク

Vector から PrimoPDF(4.1)
XLSOFT から PrimoPDF(4.1)

英語版(5.1) PrimoPDF

関連する記事

PrimoPDF 日本語版4.1 / 英語版だと、現在 5.1 でした。



posted by at 2010-07-23 00:00 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2010年07月19日

コマンドプロンプト実行時の長いプロンプトをどうにかする


コマンドプロンプト(cmd.exe)起動時の長いプロンプトを短くする : 起動時に最初に実行するコマンドの登録
詳細は、cmd.exe /? で表示される普通の事なのですが、レジストリという面倒くささ からこのような使い道にいままで発展しなかったのですが、いざ使ってみるとスマート で便利です。 あわせて以下のような、ショートカットからの使い道も検討してみるといいと思います VBScript : デスクトップにコマンドプロンプトのショートカットのスケルトンを作成する
posted by at 2010-07-19 00:00 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2009年11月11日

バッチファイルでレジストリの値を判断材料にする



バッチファイル : VS9.0のMicrosoft純正バッチ処理 : For /F : バッチファイルでレジストリの値を判断材料にする

For コマンドの詳細は、コマンドプロンプトで for /? とすると表示されますが、非常にわかりにくいものです。そして、構文の中でも For /F で別のコマンドの表示結果をキャプチャして使う方法は非常に利用範囲の広いのですが、けっこう複雑で利用方法は一般に見えにくいですが、Visual Studio 9.0 に、ビルド用の環境変数を設定するバッチファイルがあって、これがとてもいいサンプルだと思います。


FOR /F ["オプション"] %変数 IN (`コマンド`) DO コマンド [コマンド パラメータ]

    ファイル名セットは、1 つ以上のファイル名です。各ファイルが開かれ、読み
    取られ、処理されてから、ファイル名セットの次のファイルに進みます。処理
    には、ファイルの読み取り、個々のテキスト行への分割と、0 個以上のトークン
    への解析が含まれます。その後、変数値を見つかったトークン文字列に設定して、
    for ループの本体が呼び出されます。既定では、/F は、各ファイルの各行から、
    空白で区切られた最初のトークンを渡します。空白行はスキップされます。既定
    の解析動作を変更するには、オプションの "オプション" パラメータを指定しま
    す。これは、異なる解析オプションを指定する 1 つ以上のキーワードを含む、
    引用符で囲まれた文字列です。キーワードは、次のとおりです:

        eol=c           - 行末のコメント文字を指定します (1 文字)。
        skip=n          - ファイルの先頭でスキップする行数を指定します。
        delims=xxx      - 区切り文字のセットを指定します。これは、既定の
                          区切り文字であるスペースとタブを置き換えます。
        tokens=x,y,m-n  - 各繰り返しに対して、各行から for 本体に渡すトー
                          クンを指定します。これにより、追加の変数名が割り当
                          てられます。m-n の形式は範囲で、m 番目から n 番目の
                          トークンを指定します。tokens= 文字列の最後の文字が
                          アスタリスクである場合は、追加の変数が割り当てられ、
                          最後のトークンが解析された後、行に含まれている残り
                          のテキストを受け取ります。
        usebackq        - 次の新しい表示形式を指定します。逆引用符で囲まれた
                          文字列がコマンドとして実行され、一重引用符で囲まれた
                          文字列がリテラル文字列コマンドになりファイル名セット
                          のファイル名を二重引用符で囲めるようになります。
posted by at 2009-11-11 11:47 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2009年09月20日

ファイルの表示順をシャッフルするバッチファイル

我ながら、良くできてると思うのですが・・・・
用途が殆ど無いのがちょっと残念。

例えば、mp3 の入ってフォルダの自然の再生順序を変えたい場合、

sf.bat *.mp3 @

とすると、頭に、ランダムな数値+@+元のファイル名になります。
何度やっても数値が変わるだけで、元のファイル名に戻したい場合は

sf.bat *.mp3 @ RESET

です。



バッチファイル : ファイル順のシャッフル




posted by at 2009-09-20 21:00 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2009年09月12日

環境変数をカウンタとして使う




バッチファイルというのは、プログラマからするととても優先順位が低い知識になります。
WSH で、VBScript 書いたほうが早いからですが、しかし、運用する側からすると バッチ
ファイルは誰でも記述できますし、書き方間違えても動かないだけで、バグのようなものは
発生しにくい特性があります。

さらに、Microsoft がロクな解説をしてくれていないので、知る限りにおいて
できる事の内容がとても解りにくいです。

ですから、ここで紹介する内容よりももっとスマートなものがあるかも知れませんが、
少なくとも、WSH からアクセスする USER 環境変数がどのプロセスでも共通の
固定されたエリアである事の裏付けにはなったと思います
( マニュアルで違うような事を書いてるんですよね・・・ )

だとすれば、カウンタに限らず、for の コマンドの結果を変数にセットする書式を使うと、
色々な応用が可能なはずです。ここでは一番解りやすい、errorlevel を使用していますが、
文字列変数を使った条件式でも可能だと思います。


:count
for /f  %%i in ('call add') do (
	exit /b %%i
)




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

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

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

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

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


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

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

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

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

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


Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX