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

2020年09月07日

コマンドプロンプト

設定スクロール表示を一時停止する全画面表示入力コマンドを履歴から選択基本的なコマンドと環境変数の組み合わせリダイレクトでテキストファイルを作成するコマンドの使い方を見る32ビット用のコマンドプロンプトを実行フォルダやファイルを作業する時の基本コマンドクリップボードへのコピーと取得ネットワーク関連の基本コマンドサービスの開始と終了コマンドプロンプトで 10秒スリープレジストリのキーと値を取得するGUIDをクリップボードにセット誰でもフルアクセスできる共有を作成シャットダウンダイアログの表示キャラクタセットを変更するバックアップに xcopy を使用する

設定

サイズは自由ですが、ここではテンプレートとして幅はレガシーなサイズを使用しています





スクロール表示を一時停止する

コマンドプロンプトウインドウをクリックして下さい

再開は任意のキーやマウスの右クリックです。なので、できるだけすぐスクロールを止めたい場合は CTRL+C を連打(2回)します



スクロール表示内容をしっかり見たい場合は、more にパイプで渡します
dir c:\windows\system32 | more
more の結果を一行づつ進めるのは Enter で、ページ毎に進めるのは space です 全画面表示 ( ALT+TAB で他の実行中のウインドウを表示しています )
F11 または、ALT+Enter で全画面表示となります。
どちらで実行しても、F11 または ALT+Enter で元に戻ります
入力コマンドを履歴から選択
F7 で開いて、ESC で閉じます。上下カーソルで選択して Enter で実行されます。
コマンドライン上で上下矢印キーで実行せずに選択できます
基本的なコマンドと環境変数の組み合わせ
1) cd \u*\%username%\des*
2) cd %appdata%
3) echo %cd%
4) start %temp%
1) フォルダ文字列にワイルドカードと環境変数を使用してデスクトップへ移動します。
2) Users\ユーザ名\AppData\Roaming へ移動します
3) 現在のフォルダを表示します
4) テンポラリフォルダをエクスプローラで開きます
リダイレクトでテキストファイルを作成する
1) echo on > empty.txt
2) help > help.txt
3) dir > list.txt & dir c:\windows >> list.txt
4) type con > message.txt
5) type nul > message.txt
6) sort /r < help.txt > help2.txt
1) 空のファイルを作成
2) help で表示される内容を help.txt というファイルに書き込む
3) カレントのファイル一覧と、c:\windows のファイル一覧を list.txt に書き込む
4) キーボードから入力した内容を message.txt に書き込む( 最終行で CTRL+Z )
5) 空のファイルを作成
6) help.txt の内容を逆ソートして help2.txt に書き込む
コマンドの使い方を見る ? 引数無しで実行 ? /? を付けて実行 ? 英語系のコマンドは 引数に --help を付けて実行 32ビット用のコマンドプロンプトを実行 32ビット用の Windows アプリケーションは \Windows\SysWOW64 フォルダ内にあります フォルダやファイルを作業する時の基本コマンド
1) dir /A:-D /B
2) dir /A:-D | sort /R
3) cd .
4) cd ..
5) cd \
6) cls
7) start .
dir コマンドは、指定したフォルダの中にどのようなファイルまたはフォルダを表示します。/A オプションは、どのような種別のリソースを表示するかを指定します。/A:D だとディレクトリ(フォルダ)のみで、/A:-D だとディレクトリを表示しないということになります。

cd コマンドは指定したディレクトリへの移動になりますが、. と .. は、相対パスです。\ は同一ドライブ内のルートとなります。その他、ディレクトリを絶対パスで指定をする事ができます。パスの指定は dir でも同じ指定で可能です。

start . で現在のフォルダでエクスプローラを開きます
クリップボードへのコピーと取得
1) echo あいうえお | clip
2) powershell get-clipboard
1) コマンドプロンプトの標準出力をパイプで clip に渡す
2) クリップボードの内容を取得して標準出力に出力して表示する
ネットワーク関連の基本コマンド
1) ping -4 PC名
2) ipconfig /all
3) net view \\PC名
サービスの開始と終了 サービスの処理は通常管理者権限のコマンドプロナプトから実行する必要があります。 管理者権限のコマンドプロンプトは、通常のコマンドブロンプトのタスクバーにあるアイコンを SHIFT+CTRL キーを押しながらクリックします
1) net start サービス名
2) sc start サービス名
3) net stop サービス名
4) sc stop サービス名
net コマンド は、サービスの処理が終了するまで、コマンド処理が待機します。sc コマンドは サービスの処理の結果を待ちません 
コマンドプロンプトで 10秒スリープ
1) timeout 10
2) timeout /NOBREAK 10
3) powershell sleep -m 10000
※ /NOBREAK は、キーが押されても無視し、指定時間待ちます( CTRL+C では終了します ) レジストリのキーと値を取得する
reg query "HKLM\SOFTWARE\WOW6432Node\ODBC\ODBCINST.INI\ODBC Drivers" /s
※ /s は、再帰的にサブキーと値をすべて照会します GUIDをクリップボードにセット
echo Set TypeLib=CreateObject("Scriptlet.TypeLib"):Wscript.echo TypeLib.Guid>%temp%\_.vbs&cscript.exe /NOLOGO %temp%\_.vbs | clip

誰でもフルアクセスできる共有を作成
net share temp=%temp% /grant:everyone,full /cache:documents /remark:"一時共有"
削除は以下のようにして行います
net share temp /delete
作成した共有を使用してネットワークドライブを割り当てます
net use t: \\%computername%\temp

※ 以下は割り当ての削除です
net use t: /delete
シャットダウンダイアログの表示
echo Set sh=CreateObject("shell.application"):sh.ShutdownWindows>%temp%\_.vbs&wscript.exe %temp%\_.vbs

キャラクタセットを変更する
1) mode con cp select=65001
2) mode con cp select=932
1) UTF-8
2) SHIFT_JIS
バックアップに xcopy を使用する
xcopy.exe "コピー元ディレクトリ" "コピー先ディレクトリ\" /D /E /C /S /Y"
/D:月-日-年
指定された日付以降に変更されたファイルをコピーします。日付が指定されなかったときは、送り側の日付が受け側の日付より新しいファイルだけをコピーします。

/E ディレクトリまたはサブディレクトリが空であってもコピーします。
/C エラーが発生してもコピーを続けます。
/S 空の場合を除いて、ディレクトリとサブディレクトリをコピーします。
/Y 受け側の既存のファイルを上書きする前に確認のメッセージを表示しません
posted by at 2020-09-07 16:25 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

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 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

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 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

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 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

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

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

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

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

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


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

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

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

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

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