SSブログ

PowerShell小僧:階層構造のフォルダに配置されているファイル(2) [コンピューター]

1.階層構造のフォルダの子フォルダにあるファイルを、親フォルダに移動する。
2.子フォルダを削除する。

というスクリプトを改造しました。

改造前:
https://cheese999.blog.ss-blog.jp/2022-08-04

改造後のコードは以下のとおり。

スクリプトを別ファイル(ファイル名:myFChdFldDel1.ps1)にして、親ファイルから呼ぶようにしました。
※Read-HostDefaultは、myFunction1_UTF8.ps1に定義されている関数です。

1.親ファイル

## 関数読み込み ##
. $myFunctionFile1

(中略)

Set-Location -LiteralPath $ScriptPath1 # スクリプトフォルダに移動
.\myFChdFldDel1.ps1 -ScriptPath1 $ScriptPath1 -MyFilePath1 $MyFilePath1 `
-SupConf1 $SupConf1 -FnLd1 0 > $null

2.myFChdFldDel1.ps1

# 機能1:子フォルダにあるファイルをカレントフォルダに移動する
# 機能2:子フォルダを削除
# パラメータ
Param(
  [Parameter(Mandatory=$true)]
  [string]$ScriptPath1, # スクリプトがある場所
  [string]$MyFilePath1, # カレントフォルダ
  [string]$SupConf1, # 確認の抑止(Y/N)
  [int]$FnLd1 # 関数ファイルの読み込み(0/1)
)
# 本体コード
if($FnLd1 -eq 1){
  # 関数ファイル
  $myFunctionFile1 = $ScriptPath1+"\myFunction1_UTF8.ps1"
  # 関数読み込み ##
  . $myFunctionFile1
}
# 戻り値の初期化(正常)
$myResult1 = $TRUE
# ドットソース演算子
# .{}の中の標準出力は戻り値に含めない
.{
  Set-Location -LiteralPath $MyFilePath1 # カレントフォルダに移動
  Write-Output ("カレントフォルダ:" + $MyFilePath1) | Write-Host
  $NumChdFld1 = (Get-ChildItem -Directory | Measure-Object).Count # 子フォルダ数
  Write-Output ("子フォルダ数=" + $NumChdFld1) | Write-Host
  # 子フォルダにあるファイルをカレントフォルダに移動する
  if($NumChdFld1 -ne 0){
    [int]$MyCNT5 = 0 # 子フォルダにあるファイル数
    Get-ChildItem -Recurse -File|ForEach-Object{
      $MyFilePath3 = ($_|Split-Path -Parent) # ファイルがあるフォルダ
      if($MyFilePath1 -ne $MyFilePath3){
        if($MyCNT5 -eq 0){Write-Host "子フォルダにあるファイルをカレントフォルダに移動します。"}
        Write-Output ("ファイル名:" + $_) | Write-Host
        Move-Item $_ $MyFilePath1 # ファイルが子フォルダにある場合、カレントフォルダに移動
        $MyCNT5++ # 子フォルダにあるファイル数をインクリメント
      }
    }
    if($MyCNT5 -eq 0){
      Write-Host "子フォルダにファイルが、ありません。"
    }else{
      Write-Output ("子フォルダにあるファイル数=" + $MyCNT5) | Write-Host
    }
    if($SupConf1 -eq "N"){Read-HostDefault "OK?" > $null} # 入力待ち
    # 子フォルダを削除
    Write-Host "子フォルダを削除します。"
    [int]$MyCNT6 = 0 # 子フォルダ数
    Get-ChildItem -Directory|ForEach-Object{
      Write-Output("子フォルダ:" + $_) | Write-Host
      Remove-Item -Recurse $_
      $MyCNT6++ # 子フォルダ数
    }
    Write-Output ("子フォルダ数=" + $MyCNT6) | Write-Host
    if($SupConf1 -eq "N"){Read-HostDefault "OK?" > $null} # 入力待ち
  }else{
    Write-Host "子フォルダが、ありません。"
  }
  # ドットソース演算子の{}を抜ける
  Return
# }|Out-Null # ドットソース演算子の{}内の標準出力は戻り値に含めない
}>$null # ドットソース演算子の{}内の標準出力は戻り値に含めない(Out-Nullは遅い)
# 以下、戻り値
Return $myResult1
タグ:powershell
ヤバイぜ!(8)  コメント(1) 
共通テーマ:パソコン・インターネット

ヤバイぜ! 8

コメント 1

cheese999

ヤバイぜ! ありがとうございます(^_0)ノ
by cheese999 (2022-08-13 16:15) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字(英大文字の「オー」、英小文字の「ユー」、アラビア数字の「ハチ」、アラビア数字の「イチ」、アラビア数字の「ニ」)を入力してください。

Facebook コメント

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。