指定の文字列が先頭にあるかを調べる(IndexOf)

とある文字列に対し、指定した先頭にあるか(前方一致)を調べるには「StartsWith」または「like」を使用します。

$targetString = "testhogehoge"

# 文字列が「test」で始まるかどうかの判定(StartsWithを使う)
if ($targetString.StartsWith("test")) {
    Write-Host "文字列は「test」で始まっています。"
} else {
    Write-Host "文字列は「test」で始まっていません。"
}

# 文字列が「test」で始まるかどうかの判定(likeを使う)
if ($targetString -like "test*") {
    Write-Host "文字列は「test」で始まっています。"
} else {
    Write-Host "文字列は「test」で始まっていません。"
}

 

 

指定の文字列が後方にあるかを調べる(IndexOf)

とある文字列に対し、指定した後方にあるか(後方一致)を調べるには「EndsWith」または「like」を使用します。

$targetString = "hogehogetest"

# 文字列が「test」で終わるかどうかの判定(EndsWithを使う)
if ($targetString.EndsWith("test")) {
    Write-Host "文字列は「test」で終わっています。"
} else {
    Write-Host "文字列は「test」で終わっていません。"
}

# 文字列が「test」で終わるかどうかの判定(likeを使う)
if ($targetString -like "*test") {
    Write-Host "文字列は「test」で終わっています。"
} else {
    Write-Host "文字列は「test」で終わっていません。"
}

 

あわせて読みたい

特定の文字が含まれるかを調べる方法はこちらです。

前方一致、後方一致の方法はこちら

エラーメッセージの対応方法

PowerShellで.psファイルを実行しようとした時、「このシステムではスクリプトの実行が無効になっているため、ファイル・・・を読み込むことができません。詳細については、・・・」と表示された時の対応方法です。対応方法は3ステップでOK。

 

# 1.powershellを管理者権限で実行

# 2.このコマンドを実行する
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

# 3.「Y」を入力し、ENTER(小文字のyでもOK)

# ※ PowerShell ISEを起動していたら再起動し、再度実行して下さい

コマンド

【コマンド】現在日時と書式設定

【コマンド】フォルダの作成、削除

【コマンド】フォルダリスト、ファイルリストの取得

【コマンド】フォルダ丸ごとコピーする(XCOPY)

【コマンド】プロセスを強制終了させる

【コマンド】シャットダウンさせる(再起動、ネットワーク越し再起動)

【コマンド】ネットワークドライブの割り当て(net use、subst)

【コマンド】空のテキストファイルを出力するコマンド【動作確認用にも】

 

 

文字列操作

文字列が空であるかのチェック

大文字、小文字の変換、半角、全角の変換

特定の文字が含まれるかを調べる

文字列の〇文字目から〇文字取得する(mid , substring)

文字列の右から〇文字取得する(right)

文の区切り

文字列の結合

 

 

数値操作

四捨五入する(切り上げ、切り捨てする方法も)

余りを計算する(mod)

数値であるかのチェック

 

 

日付操作

日付の書式を設定する

 

 

システム関連

プロセスを取得する

 

 

ファイル・フォルダ操作

ファイルの情報を取得する

ファイル操作(コピー、削除)

フォルダ操作(作成、削除、コピーなど)

ファイル・フォルダの存在チェック

フォルダ内のファイルをループする

 

 

その他、文法など

コメント文を入力する

IF文の書き方

For文の書き方

ファンクションの作成例(超単純なサンプル)

タブ文字、改行文字の入力方法

Boolean型への代入

変数の値をクリアする

 

 

PowerShell ISE

テキストを読み込みコンソールへ表示する

ブレークポイントが設定できない時の解決方法

 

ブレークポイントが設定できない

まず結論から。ブレークポイントが設定できない時、そのスクリプトファイルを保存しましょう

 

 

ブレークポイントは、メニューからまたは「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)

ネットワークドライブを割り当てするコマンドには、「net use」と「subst」の2つのコマンドがあります。二つの違いは次のとおりです。

 

net use

・ ネットワーク上のフォルダをネットワークドライブに割り当て可能

・ Windowsをログオフまたは再起動しても、割り当てが維持される

 

subst

・ ネットワーク上のフォルダに加え、ローカルのフォルダもネットワークドライブに割り当て可能

・ Windowsをログオフまたは再起動すると、割り当てが解除される

※ substの「再起動して維持されない」特性は、起動時にsubstを自動的に発動するようにすれば特に気にする必要もないと思います。そのためどのフォルダをネットワークドライブにしたいかによって使いわけるとよいと思います。

 

 

ネットワークドライブの割り当て(net use)

ネットワークドライブを割り当てするコマンドです。

# 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 ネットワークドライブレター フォルダパス

# 実行例
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つのフォルダを同期する

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