(AI質問)mkdirの返り値で分岐も出来るのか?
try{ } catch {} の常識にとらわれるな
Javaに触れてこなかったPHPerやExcelマクロ使いの場合
例外処理というものがよく分からない場合もあると思います
PowerShellはクセが強く、本来なら例外を投げそうなものが投げなかったりもしますから両陣営をたびたび困らせます
A1. BingAI (GPT4 創造的ver)
はい、mkdirコマンドは、成功した場合は0を返し、失敗した場合は-1を返します。エラーの種類に応じて、異なるエラー処理を行うことができます。例えば、以下のように書くことができます:
if (mkdir $destDir) {
# 成功した場合の処理
} else {
# 失敗した場合の処理
}
また、$?変数を使用することで、直前のコマンドの終了ステータスを取得することができます。$?が0の場合は成功、0以外の場合は失敗を表します。以下のように書くことができます:
mkdir $destDir
if ($? -eq 0) {
# 成功した場合の処理
} else {
# 失敗した場合の処理
}
以上のように、try-catch-finallyブロックや$?変数を使用することで、エラー処理を行うことができます。123
A2. OpenAI (chatGPT3.5)
`mkdir`コマンド自体は、一般的には成功した場合には特に返り値としては何も返しません。多くの場合、何も問題がなければエラーメッセージも表示されず、新しいディレクトリが作成されます。そのため、直接的に返り値を使って条件分岐することはできません。
ただし、PowerShellスクリプトなどで`mkdir`コマンドを使用する際には、`New-Item`コマンドを使用することもできます。この場合、`New-Item`は返り値を持ちますので、その返り値を使用して条件分岐することができます。
例えば、PowerShellスクリプト内でディレクトリを作成し、それに応じて分岐させたい場合は次のように書くことができます。
$directory = "C:\NewDirectory"
# ディレクトリを作成し、成功したかどうかを返り値で判定する
$result = New-Item -ItemType Directory -Path $directory -ErrorAction SilentlyContinue
if ($result) {
Write-Host "ディレクトリが作成されました。"
# 成功した場合の処理
} else {
Write-Host "ディレクトリの作成に失敗しました。"
# 失敗した場合の処理
}
こうした方法で、`New-Item`の返り値を使用して、ディレクトリの作成が成功したかどうかを確認し、それに基づいて分岐させることができます。
A3. Google Bard
はい、mkdir の返り値で分岐することもできます。mkdir の返り値は、作成が成功した場合は 0、失敗した場合は 1 になります。したがって、次のようにして分岐することができます。
PowerShell
# フォルダーを作成します。
$result = mkdir "C:\Temp\myfolder"
# フォルダーが作成されたかどうかで分岐します。
if ($result -eq 0) {
Write-Host "フォルダーが作成されました。"
} else {
Write-Host "フォルダーの作成に失敗しました。"
}
このコードを実行すると、次のようになります。
フォルダーが作成されました。
また、if ステートメントの代わりに switch ステートメントを使用しても構いません。
PowerShell
# フォルダーを作成します。
$result = mkdir "C:\Temp\myfolder"
# フォルダーが作成されたかどうかで分岐します。
switch ($result) {
0 {
Write-Host "フォルダーが作成されました。"
}
1 {
Write-Host "フォルダーの作成に失敗しました。"
}
}
このコードを実行すると、次のようになります。
フォルダーが作成されました。