文字列操作
・文字列の〇文字目から〇文字取得する(mid , substring)
数値操作
日付操作
システム関連
ファイル・フォルダ操作
その他、文法など
PowerShell ISE
コマンド
・【コマンド】シャットダウンさせる(再起動、ネットワーク越し再起動)
・【コマンド】ネットワークドライブの割り当て(net use、subst)
・【コマンド】空のテキストファイルを出力するコマンド【動作確認用にも】
・文字列の〇文字目から〇文字取得する(mid , substring)
・【コマンド】シャットダウンさせる(再起動、ネットワーク越し再起動)
・【コマンド】ネットワークドライブの割り当て(net use、subst)
・【コマンド】空のテキストファイルを出力するコマンド【動作確認用にも】
まず結論から。ブレークポイントが設定できない時、そのスクリプトファイルを保存しましょう。
ブレークポイントは、メニューからまたは「F9」キーで設定できます。
この画像ではブレークポイントが設定できないようになっています。
ブレークポイントが設定できない理由としてよくあるケースは、PowerShell ISEを起動したばかりでそのスクリプトを保存をしていない場合です。
一度保存をするとブレークポイントが設定(赤い背景色がつきます)できるようになります。
今回は以上になります。是非お試しください。
空のテキストファイルを出力するコマンドです。
テスト等に活用できると嬉しいです。
# 空のテキストファイルを出力する
# "null"ではなく"nul"の点に注意して下さい
type nul > テキストファイルのパス
# 実行例
type nul > C:\Test\フォルダ01\file01.txt
type nul > C:\Test\フォルダ01\file02.txt
type nul > C:\Test\フォルダ01\file03.txt
type nul > C:\Test\フォルダ01\file04.txt
type nul > C:\Test\フォルダ01\file05.txt
ネットワークドライブを割り当てするコマンドには、「net use」と「subst」の2つのコマンドがあります。二つの違いは次のとおりです。
net use
・ ネットワーク上のフォルダをネットワークドライブに割り当て可能
・ Windowsをログオフまたは再起動しても、割り当てが維持される
subst
・ ネットワーク上のフォルダに加え、ローカルのフォルダもネットワークドライブに割り当て可能
・ Windowsをログオフまたは再起動すると、割り当てが解除される
※ substの「再起動して維持されない」特性は、起動時にsubstを自動的に発動するようにすれば特に気にする必要もないと思います。そのためどのフォルダをネットワークドライブにしたいかによって使いわけるとよいと思います。
ネットワークドライブを割り当てするコマンドです。
# net use文
net use ネットワークドライブレター フォルダパス パスワード /user:ユーザーID
# 実行例
# ネットワーク上のフォルダを指定可能
net use z: \2.168.10.10\share password /user:administrator
# net useの切断
net use ネットワークドライブレター /delete
# 実行例
net use z: /delete
ネットワークドライブを割り当てするコマンドです。
# subst文
subst ネットワークドライブレター フォルダパス
# 実行例
subst y: C:\test # substはローカルのフォルダも指定可能
subst z: \2.168.10.10\share # ネットワーク上のフォルダも指定可能
# substの切断
subst ネットワークドライブレター /d
# 実行例
subst z: /d
シャットダウンや再起動させるには、次のコマンドを使用します。
トラブル時などのために、ネットワーク越しのPCに対して再起動を行うコマンドも紹介しています。
# 再起動をする
shutdown /r /f /t 0
# シャットダウンをする
shutdown /s /f /t 0
# ネットワーク越しに再起動
shutdown /r /m \\IPアドレス /f /c "再起動しました"
shutdown /r /m \2.168.x.x /f /c "再起動しました" # 実行例
<#
オプション
/s : シャットダウンする
/r : 再起動する
/f : 警告なしで実行中のアプリケーションを強制終了する
/t : シャットダウンまでの時間(秒) ※デフォルト30秒
/m : シャットダウンするコンピュータを指定する
/c : シャットダウン時のメッセージ(コメント)を指定する
#>
プロセスを強制終了させるには、次のコマンドを使用します。
# プロセスを終了させる
taskkill /IM プロセス名
taskkill /PID プロセスID /F
# ネットワーク上PCのプロセスを終了させる
taskkill /S IPアドレス /PID プロセスID /F
<#
/IM : プロセス名の指定するために使用
/F : 強制終了
/PID : プロセスIDを指定するために使用
/S : 名前またはリモートコンピューターのIPアドレスを指定
#>
# 実行例
taskkill /IM notepad.exe
taskkill /PID 8860 /F
taskkill /S 192.168.XX.XX /PID 13956 /F
上のようにプロセスを強制終了させるには、起動しているプロセスを知る必要があります。
起動しているプロセスを知るには次のコマンドを使用します。
# 現在起動中のプロセスを取得する
tasklist
# 現在起動中のプロセスを取得する(ネットワーク上のPC)
tasklist /S xx.xx.xx.xx
tasklist /S 192.168.10.10 # 例
# 例:現在起動中のプロセスを取得する(chを含むリストを取得する)
tasklist /M ch* # アスタリスクはワイルドカードを示す
フォルダ丸ごとコピーするには、次のコマンドを使用します。
# フォルダ丸ごとコピーする(空のフォルダもコピーする)
xcopy コピー元のフォルダパス コピー先のフォルダパス /i /e /y
# フォルダ丸ごとコピーする(空のフォルダはコピーしない)
xcopy コピー元のフォルダパス コピー先のフォルダパス /i /s /y
<#
/i コピー先のディレクトリが存在しない場合に作成する
/e サブディレクトリもコピーする
/s サブディレクトリもコピーする(空の場合を除く)
/y 上書きとなる場合でも確認メッセージを表示しない
#>
2つのフォルダの中身を一緒にするには、xcopyではなくrobocopyを使用します。
# フォルダを同期する(空のフォルダもコピーする)
robocopy 同期元のフォルダパス 同期先のフォルダパス /e /purge
# フォルダ丸ごとコピーする(空のフォルダはコピーしない)
robocopy 同期元のフォルダパス 同期先のフォルダパス /s /purge
<#
/e サブディレクトリもコピーする
/s サブディレクトリもコピーする(空の場合を除く)
/purge コピー前にコピー元に存在しないファイル/ディレクトリをコピー先から削除する
#>
フォルダリストの取得例です。
この例では結果はクリップボードに格納しています。
# フォルダのリストを取得する
dir フォルダパス /b /ad | clip
<#
オプションについて
/b :ファイル・フォルダ名のみを表示する(日時・サイズを表示しない)
/ad :フォルダ名
/a-d :ファイル名
/s :サブフォルダも検索(この場合、/ad、/a-dがあってもフルパスになる
/o:N : 名前順 /o:-N : 名前順(降順)
/o:S : サイズ順 /o:-S : サイズ順(降順)
/o:E : 拡張子順 /o:-E : 拡張子順(降順)
/o:D : 日時順 /o:-D : 日時順(降順)
| clip :クリップボードへ( "/" ではなく"|"の点に注意)
#>
# 実行例
# C:\testの下にあるフォルダのリストを取得する
dir C:\test /b /ad | clip
# C:\testの下にあるフォルダ(サブフォルダも含む)のリストを取得する
dir C:\test /b /ad /s | clip
# C:\testの下にあるフォルダ(サブフォルダも含む)のリストを取得する(名前順)
dir C:\test /b /ad /s /o:N | clip
ファイルリストの取得例です。
この例では結果はテキストファイルに出力しています。
# ファイルのリストを取得する
dir フォルダパス /b /a-d > 出力ファイルパス
<#
オプションについて
/b :ファイル・フォルダ名のみを表示する(日時・サイズを表示しない)
/ad :フォルダ名
/a-d :ファイル名
/s :サブフォルダも検索(この場合、/ad、/a-dがあってもフルパスになる
/o:N : 名前順 /o:-N : 名前順(降順)
/o:S : サイズ順 /o:-S : サイズ順(降順)
/o:E : 拡張子順 /o:-E : 拡張子順(降順)
/o:D : 日時順 /o:-D : 日時順(降順)
| clip :クリップボードへ( "/" ではなく"|"の点に注意)
> ファイルパス :結果をファイルパスへ出力する
#>
# 実行例
# C:\testの下にあるファイルのリストを取得し、ファイルへ出力する
dir C:\test /b /a-d > C:\test\list1.txt
# C:\testの下にあるファイル(サブフォルダのファイルも含む)のリストを取得し、ファイルへ出力する
dir C:\test /b /a-d /s > C:\test\list2.txt
# C:\testの下にあるファイル(サブフォルダのファイルも含む)のリストを取得し、ファイルへ出力する(名前順)
dir C:\test /b /a-d /s /o:N > C:\test\list3.txt
フォルダ操作(フォルダの作成、削除)のコマンドまとめです。
# フォルダ作成
mkdir フォルダのパス
# 例
mkdir "C:\test"
# フォルダ削除
rmdir /s /q フォルダのパス
rd /s /q フォルダのパス # ←これでも実行可(rmdir = rdなので同じもの)
# /s:ファイルやサブディレクトリも含めて削除する
# /q:/sで削除する際に確認メッセージを表示しない
# 例
rmdir /s /q "C:\test"
rd /s /q "C:\test"
フォルダリストの取得例です。
この例では結果はクリップボードに格納しています。
# フォルダのリストを取得する
dir フォルダパス /b /ad | clip
<#
/b :ファイル・フォルダ名のみを表示する(日時・サイズを表示しない)
/ad :フォルダ名
/a-d :ファイル名
/s :サブフォルダも検索(この場合、/ad、/a-dがあってもフルパスになる
/o:N : 名前順 /o:-N : 名前順(降順)
/o:S : サイズ順 /o:-S : サイズ順(降順)
/o:E : 拡張子順 /o:-E : 拡張子順(降順)
/o:D : 日時順 /o:-D : 日時順(降順)
| clip :クリップボードへ( "/" ではなく"|"の点に注意)
#>
# C:\testの下にあるフォルダのリストを取得する
dir C:\test /b /ad | clip
# C:\testの下にあるフォルダ(サブフォルダも含む)のリストを取得する
dir C:\test /b /ad /s | clip
# C:\testの下にあるフォルダ(サブフォルダも含む)のリストを取得する(名前順)
dir C:\test /b /ad /s /o:N | clip
ファイルリストの取得例です。
この例では結果はテキストファイルに出力。
# フォルダのリストを取得する
dir フォルダパス /b /a-d > 出力ファイルパス
<#
/b :ファイル・フォルダ名のみを表示する(日時・サイズを表示しない)
/ad :フォルダ名
/a-d :ファイル名
/s :サブフォルダも検索(この場合、/ad、/a-dがあってもフルパスになる
/o:N : 名前順 /o:-N : 名前順(降順)
/o:S : サイズ順 /o:-S : サイズ順(降順)
/o:E : 拡張子順 /o:-E : 拡張子順(降順)
/o:D : 日時順 /o:-D : 日時順(降順)
| clip :クリップボードへ( "/" ではなく"|"の点に注意)
> ファイルパス :結果をファイルパスへ出力する
#>
# C:\testの下にあるフォルダのリストを取得しファイル出力する
dir C:\test /b /a-d > C:\test\list1.txt
# C:\testの下にあるフォルダ(サブフォルダも含む)のリストを取得する
dir C:\test /b /a-d /s > C:\test\list2.txt
# C:\testの下にあるフォルダ(サブフォルダも含む)のリストを取得する(名前順)
dir C:\test /b /a-d /s /o:N > C:\test\list3.txt
今日の日付の取得と、書式設定の方法を紹介します。
# 今日の日付
echo %date% # 2022/09/12
# 今年の年だけを取得する
echo %date:~0,4% # 2022
# 今月の月だけを取得する
echo %date:~5,2% # 09
# 今日の日付だけを取得する
echo %date:~8,2% # 12
# YYYYMMDD
echo %date:~0,4%%date:~5,2%%date:~8,2% # 20220912
# YYYY-MM-DD(下の2つは同じ結果)
echo %date::=-% # 2022-09-12
echo %date:~0,4%-%date:~5,2%-%date:~8,2% # 2022-09-12
# YYYY年MM月DD日
echo %date:~0,4%年%date:~5,2%月%date:~8,2%日 # 2022年09月12日
# MMDD
echo %date:~5,2%%date:~8,2% # 0912
# MM/DD
echo %date:~5,5% # 09/12
# MM月DD日
echo %date:~5,2%月%date:~8,2%日 # 09月12日
※補足ですが上の表記では「~」は真ん中ほどの高さに表示されていますが、コマンドで入力すると「~」は上の方に表示されます。両者は同じものなのでご安心ください。
現在日時の取得と、書式設定の方法を紹介します。
時間は前0埋めされないため、0埋めを行いたい場合、下の例のように変数にいれて調整する必要があります。尚、分に関しては前0埋めする必要はありません。
# 現在時刻
echo %time% # 00:12:34.56
# 現在時刻
echo %time:~0,5% # 0:12
# 現在時刻 ※時分表記
echo %time:~0,2%時%time:~3,2%分 # 0時12分
# 現在時刻 ※時間を前0埋めする
set temptime=%time: =0% # 前0埋めをするために変数に格納
echo %temptime:~0,5% # 00:12
# 現在時刻 ※時間を前0埋めする+時分表記
set temptime=%time: =0% # 前0埋めをするために変数に格納
echo %temptime:~0,2%時%time:~3,2%分%time:~6,2%秒 # 00時12分
# 現在時刻(秒まで)
echo %time:~0,8% # 00:12:34
# 現在時刻(秒まで)+前0埋め
set temptime=%time: =0% # 前0埋めをするために変数に格納
echo %temptime:~0,8% # 00:12:34
# 現在時刻の時間だけを取得する
echo %time:~0,2% # 0 (0時の時の表記)
# 現在時刻の時間だけを取得する+前0埋め
set temptime=%time: =0% # 前0埋めをするために変数に格納
echo %temptime:~0,2% # 00
# 現在時刻の分だけを取得する
echo %time:~3,2% # 12
# 現在時刻の秒だけを取得する
echo %time:~6,2% # 34
上の日付と時刻を合わせ、よく使う表記の例です。
# yyyy/mm/dd hh:mm:ss
set temptime=%time: =0% # 時間を前0埋め
echo %date% %temptime:~0,8%
# 結果 : 2022/09/12 00:12:34
# yyyy/mm/dd hh:mm:ss
set temptime=%time: =0%
echo %date::=-% %temptime:~0,8%
# 結果 : 2022-09-12 00:12:34
# yyyy年mm月dd日 hh時mm分ss秒
echo %date:~0,4%年%date:~5,2%月%date:~8,2%日 %temptime:~0,2%時%time:~3,2%分%time:~6,2%秒
# 結果 : 2022年09月12日 00時12分34秒
# yyyymmddhhmmss
set temptime=%time: =0%
echo %date:~0,4%%date:~5,2%%date:~8,2%%temptime:~0,2%%time:~3,2%%time:~6,2%
# 結果 : 20220912001234