起動したウインドウを閉じる

taskkillコマンドを使います。

batファイルでインターネットエクスプローラー、ieですね。昔のブラウザかな。これを起動して、3秒後に閉じる。

start /d "C:\Program Files\Internet Explorer\" iexplore.exe
timeout /t 3
taskkill /im iexplore.exe /f

最後にexitを入れるとbatファイルのコマンドプロンプトは無くなる。私はたいていはコマンドプロンプトを開いているので使わない。自動っぽくするにはexitがあるといい。

startって使える

コマンドプロンプトでの話です。

>start .

.はドットです。今いるフォルダをexplorerが起動します。便利かも。

コマンドプロンプトを別に起動するのも便利。

単に、>start

call や cmdでは同じコマンドプロンプトを共有するが、startは別のコマンドプロンプトを開くのです。

scでWindowsサービス名一覧

サービスの一覧。これWIN32だけらしい。答えは、最後。

C:\WINDOWS\system32>sc query | findstr SERVICE_NAME

だめなんは、以下でわかります。

C:\WINDOWS\system32>sc query | findstr 32
sc query type= service – Win32 サービスのみ列挙します

じゃ。

C:\WINDOWS\system32>sc query |findstr 64

これは無い。わー使えない!

起動していればtasklistコマンドでサービス名がわかる。

C:\WINDOWS\system32>tasklist /svc |findstr ssh
sshd.exe 10788 sshd

止まっているサービスの名前もわかればnetでもscでも起動、終了のどちらもできるだけど!!

C:\WINDOWS\system32>sc query |findstr ssd

C:\WINDOWS\system32>

と無いわ。

C:\WINDOWS\system32>net start sshd
OpenSSH SSH Server サービスを開始します.
OpenSSH SSH Server サービスは正常に開始されました。

C:\WINDOWS\system32>net stop sshd
OpenSSH SSH Server サービスは正常に停止されました。

とあるよね。これ私のノートパソコンの話しなんで、

spoolerはどのパソコンでもあるのでやってみて。

コマンドプロンプトでする。netの方がわかりやすいのでここではnetコマンドを使ってます。

C:\Windows\System32>net stop spooler
Print Spooler サービスを停止中です.
Print Spooler サービスは正常に停止されました。

C:\Windows\System32>net start spooler
Print Spooler サービスを開始します.
Print Spooler サービスは正常に開始されました。

ヘルプは、コマンドプロンプトでscを実行する。

C:\Windows\System32>sc
説明:
        SC はサービス コントロール マネージャーやサービスと通信するために使用
        するコマンド ライン プログラムです。
使用法:
        sc <サーバー> [コマンド] [サービス名] <オプション 1> <オプション 2>...


        オプションの <サーバー> は "\\サーバー名" の形式です。
        「sc [コマンド]」と入力するとコマンドの詳細なヘルプが表示されます。
        コマンド一覧:
          query-----------サービスの状態を照会したりサービスの種類ごと
                          に状態を列挙したりします。
          queryex---------拡張されたサービスの状態を照会したりサービス
                          の種類ごとに状態を列挙したりします。
          start-----------サービスを開始します。
          pause-----------サービスに PAUSE 制御要求を送信します。
          interrogate-----サービスに INTERROGATE 制御要求を送信します。
          continue--------サービスに CONTINUE 制御要求を送信します。
          stop------------サービスに STOP 要求を送信します。
          config----------サービスの構成を変更します (恒久的)。
          description-----サービスの説明を変更します。
          failure---------エラー発生時のサービスの動作を変更します。
          failureflag-----サービスの障害動作フラグを変更します。
          sidtype---------サービスのサービス SID の種類を変更します。
          privs-----------サービスの必要な特権を変更します。
          managedaccount--サービス アカウントのパスワードを LSA で管理された
                          パスワードとマークするようにサービスを変更します。
          qc--------------サービスの構成情報を照会します。
          qdescription----サービスの説明を照会します。
          qfailure--------エラー発生時のサービスの動作を照会します。
          qfailureflag----サービスの障害動作フラグを照会します。
          qsidtype--------サービスのサービス SID の種類を照会します。
          qprivs----------サービスの必要な特権を照会します。
          qtriggerinfo----サービスのトリガー パラメーターを照会します。
          qpreferrednode--サービスの優先 NUMA ノードを照会します。
          qmanagedaccount-パスワードが LSA で管理されたアカウントを
                         サービスで使用するかどうかを照会します。
          qprotection-----サービスのプロセス保護レベルを照会します。
          quserservice----ユーザー サービス テンプレートのローカル インスタンスを照会します。
          delete----------レジストリからサービスを削除します。
          create----------サービスを作成します (レジストリに追加します)。
          control---------サービスに CONTROL コードを送信します。
          sdshow----------サービスのセキュリティ記述子を表示します。
          sdset-----------サービスのセキュリティ記述子を設定します。
          showsid---------任意の名前に対応するサービス SID 文字列を表示します。
          triggerinfo-----サービスのトリガー パラメーターを構成します。
          preferrednode---サービスの優先 NUMA ノードを設定します。
          GetDisplayName--サービスの DisplayName を取得します。
          GetKeyName------サービスの ServiceKeyName を取得します。
          EnumDepend------サービスの依存関係を列挙します。

        次のコマンドはサービス名を指定しません:
        sc <サーバー> <コマンド> <オプション>
          boot------------(ok | bad) 最後に行われたブートを前回正常起動時
                          の構成として保存するかどうかを示します。
          Lock------------サービス データベースをロックします。
          QueryLock-------SCManager データベースの LockStatus を照会します。
例:
        sc start MyService


QUERY と QUERYEX のオプション:
        クエリ コマンドにサービス名が続く場合、サービスの状態が戻されます。
        この場合、それ以上のオプションは適用されません。クエリ コマンドに
        オプションがない場合やまたは以下に一覧に表示されているオプションが
        続く場合は、サービスが列挙されます。
    type=    列挙するサービスの種類 (driver、service、user service、all)
             (既定 = service)
    state=   列挙するサービスの状態 (inactive、all)
             (既定 = active)
    bufsize= 列挙バッファーのサイズ (バイト)
             (既定 = 4096)
    ri=      列挙の開始を指定するための再開インデックス番号
             (既定 = 0)
    group=   列挙するサービス グループ
             (既定 = all groups)

構文の例
sc query                - アクティブなサービス ドライバーの状態を列挙します
sc query eventlog      - イベントログ サービスの状態を表示します
sc queryex eventlog    - イベントログ サービスの拡張状態を表示します
sc query type= driver   - アクティブなドライバーのみ列挙します
sc query type= service  - Win32 サービスのみ列挙します       <<<<<<わお
sc query state= all     - サービスとドライバーをすべて列挙します  <<<<これ!!
sc query bufsize= 50    - 50 バイトのバッファーで列挙します
sc query ri= 14         - 再開インデックスを = 14 にして列挙します
sc queryex group= ""    - グループにないアクティブなサービスを列挙します
sc query type= interact - 対話型サービスをすべて列挙します
sc query type= driver group= NDIS     - NDIS ドライバーをすべて列挙します


C:\Windows\System32>

答えは

sc query state=all | findstr SERVICE_NAME

state=allなんです。

C:\WINDOWS\system32>sc query state=all|findstr ssh
SERVICE_NAME: ssh-agent
SERVICE_NAME: sshd

見つけてますね。OK

sc query state=all | findstr 探したいサービス名の一部

ssh 「Secure Shell」

セキュア シェル。Windowsで言えばShellシェルとはcmd.exeやエクスプローラーかな。

暗号化したコマンド。暗号化したトンネル(パイプ)を作ったり、scpでコピーもできるし多機能です。

コマンドで使うのでキーボード大好きな人向き。

もともと、マウスで操作するのは自動化や繰り返し処理には向かない?

私はキーボード操作が好きです。

さて、

sshの前にtelnetを使っているとあーsshねとなると思いますが。Windowsでは使うことないでしょ。もともとsshはUNIXで一般的につかわれています。

ここでは、Windows10で使えるということでやってみます。

sshクライアントとsshdサーバーの2つともWindows10では設定するだけですぐに使える。

コマンドプロンプトでssh localhostまたはssh 127.0.0.1で自分のサーバーに接続する。

taskkillコマンド 特定のアプリを強制終了

sshで接続中にサーバー側でsshdサーバーを終了することはできないが、接続しているPuTTyを終了すると、途中まで止まっていたsshdサーバーは終了手続きを続けて、終了できる。

さて、

会社と家のノートパソコンが443のポートで長時間接続中というのはいけません。時たま、PuTTyの終了を忘れていても接続を切る。

その方法は、sshdサーバーはそのまま、Puttyを終了させます。

Windows10のtaskkillコマンドは、/imを付けて実行するとプロセスのソフト名、実行ファイル名を指定できる。

sshで接続しているクライアントソフトPuTTyのプロセスを終了させるコマンド。/fは強制という意味。

taskkill /im putty.exe /f

これをメニューの「Windows管理ツール」の「タスク スケジューラ」に登録しておきます。日に何度かtaskkillを実行させる。

コマンドでPDFファイルを分割・結合

Evernoteに保存する時に貼り付けるファイルのサイズに限界がある。PDFが50MBだと分割する必要がある。また、ネットからダウンロードして見る場合も小さい方が便利。そんでコマンドでできるんで便利ですねー。ここからFree版をダウンロードしてインストール。インストールの最後あたりにWindowsの環境変数にPATHの環境変数だと思うが設定するか?。当然Yesで。インストール前に開いたコマンドプロンプトでは環境変数が登録されてないので使えない。再度、コマンドプロンプトを開いてpdftkを入力してエンター。

c:\Users\user\Pictures>pdftk                   (pdftkだけ入力enterキー)
SYNOPSIS
pdftk
[ input_pw ]
[ ]
[ output ]
[ encrypt_40bit | encrypt_128bit ]
[ allow ]
[ owner_pw ]
[ user_pw ]
[ flatten ] [ need_appearances ]
[ compress | uncompress ]
[ keep_first_id | keep_final_id ] [ drop_xfa ] [ drop_xmp ]
[ verbose ] [ dont_ask | do_ask ]
Where:
may be empty, or:
[ cat | shuffle | burst | rotate |
generate_fdf | fill_form |
background | multibackground |
stamp | multistamp |
dump_data | dump_data_utf8 |
dump_data_fields | dump_data_fields_utf8 |
dump_data_annots |
update_info | update_info_utf8 |
attach_files | unpack_files

For Complete Help: pdftk –help

と出れば使える。

ページ数の確認 c:\Users\user\PicturesのフォルダにPDFファイルがあると想定してるのでコマンドプロンプトは「c:\Users\user\Pictures>」となる。「c:\Users\user\Pictures>」がコマンドプロンプト。

c:\Users\user\Pictures>pdftk ファイル名.pdf dump_data

だらだらと流れますが終わりあたりの行でページ数がわかる。

分割。30ページから最後までを別のファイルに出力する。

c:\Users\user\Pictures>pdftk 分割するファイル名.pdf cat 30-end output 出力するファイル名.pdf

最後まで=endが使える。catやらoutputやらがあることにご注意。もともとLinux物ですから。前半の20ページまでならcatの次が1-19となる。0からでは無い。1から始まる。

結合

c:\Users\user\Pictures>pdftk 元ファイル1.pdf 元ファイル2.pdf cat output 結合済みファイル名.pdf

CubePDFとかのウィンドウ操作で作ってたけどコマンドならきっと1/10の時間でてきる。コマンドは時間短縮になるのです。

bat if 文 else

C:\Users\username>set aa=15

C:\Users\username>set /a hh=aa-16
-1
C:\Users\username>if hh==-1 echo yes

C:\Users\username>if %hh%==-1 echo yes
yes

C:\Users\username>if %hh%==-1 (echo yes)
yes

C:\Users\username>if %hh%==-1 (
More? echo yes
More? echo y
More? )
yes
y

C:\Users\username>if %hh%==-8 (echo yes)

C:\Users\username>if %hh%==-8 (echo yes)else( echo no)
else( の使い方が誤っています。

C:\Users\username>if %hh%==-8 (echo yes) else ( echo no)
no

複数のbatファイル

call ???.bat
として、複数のバッチファイルを呼び込んで、また帰ってくる。
「帰ってくる」とは、元のaaa.batからbb.bat,cc.bat,dd.batを呼び出して元のaaa.batに戻る。

aaa.batの中身。

@echo aaa
call bb.bat
call cc.bat
call dd.bat
echo aaa

bb.batの中身

@echo bb

㏄.batの中身

echo cc

dd.batの中身

echo dd

aaa.bat実行の様子。echoで@echoにするとechoコマンドの行が見えません。

C:\Users\take2\tmp>aaa
aaa
C:\Users\take2\tmp>call bb.bat
bb

C:\Users\take2\tmp>call cc.bat

C:\Users\take2\tmp>echo cc
cc

C:\Users\take2\tmp>call dd.bat

C:\Users\take2\tmp>echo dd
dd

C:\Users\take2\tmp>echo aaa
aaa