アプリ版:「スタンプのみでお礼する」機能のリリースについて

基本的な所で間違えていると思いますが、ご容赦ください。
PowerShellで表示される現在のパスが、長いので簡略してパス表記されるようにしたくて
スクリプトを作ってみました。
やりたいことは、PS G:\マイドライブ\XXX1\HOMEPAGE\workspace\test>
とあったときに、PS G:\マイドライブ\・・\test> となるようにしたいです。
作ってみたプログラム:

function prompt () {
# $PATH配列にパスを分割して代入
$PATH = Get-Location -split "\"
# $PATH配列の長さを取得
$PATH_ELEMENT_LENGTH = $PATH.Length
# $PATH配列の長さが3以下の時は、配列をそのまま連結する
if ($PATH_ELEMENT_LENGTH -le 3) {
$PATH -join "\"
}# $PATH配列の長さが4以上の時は、配列[0]と配列[1]と文字列"・・"と配列[-1](配列の最後)を連結して代入
elseif($PATH_ELEMENT_LENGTH -ge 4){
$PATH = $PATH[0..1],"・・", $PATH[-1] -join "\"
}# 必要ないかもしれないがその他の時にエラーメッセージを代入
else {
$PATH = "パスの表示のための操作にエラーが発生しています"
}
# PSの文字列と$PATH配列を連結して表示
"PS" + $PATH + ">"
}

A 回答 (2件)

function prompt {


$path = (Get-Location).Path -split '\\'
$pathLength = $path.Length

if ($pathLength -le 3) {
$path -join '\'
}
elseif ($pathLength -ge 4) {
$shortenedPath = $path[0], $path[1], '..', $path[-1]
$shortenedPath -join '\'
}
else {
"Error: Unable to process path for display"
}

"PS $($shortenedPath -join '\')>"
}
    • good
    • 0
この回答へのお礼

修正ありがとうございます。機能することも確認できました。
使えるようにしていただき、嬉しいです。

お礼日時:2024/02/23 23:14

function prompt {


# 現在のパスを取得
$currentPath = Get-Location
# パスを分割
$pathElements = $currentPath -split "\\"
# パスの要素数を取得
$pathLength = $pathElements.Length

# パスの要素数に応じて処理を分岐
if ($pathLength -le 3) {
# 要素数が3以下の場合はそのまま連結
$shortenedPath = $pathElements -join "\"
}
elseif ($pathLength -ge 4) {
# 要素数が4以上の場合は先頭2要素と"・・"、最後の要素を連結
$shortenedPath = $pathElements[0..1] + "・・" + $pathElements[-1] -join "\"
}
else {
# その他の場合はエラーメッセージを表示
$shortenedPath = "パスの表示のための操作にエラーが発生しています"
}

# 簡略化されたパスを表示
"PS $shortenedPath>"
}

この修正を加えたスクリプトを試してみてください。
動くかもしれません?
    • good
    • 0
この回答へのお礼

動きます!ありがとうございます。

お礼日時:2024/03/01 23:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています