質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

2回答

840閲覧

半角スペースと-を含む引数の指定方法について

KEN1115

総合スコア22

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2023/05/28 06:00

編集2023/05/28 22:04

実現したいこと

$ソートに"-Descending LastWriteTime"に相当する文字列を引数として使用し、更新日時の逆順にファイルを移動したい

前提

Windows10
VSCODE

発生している問題・エラーメッセージ

"-Descending LastWriteTime"の部分がうまく認識されずに名前順で参照される

該当のソースコード

powershell

1function ファイル移動($移動元, $移動先, $ソート, $移動数) { 2 #移動対象ファイルのフルパスを配列に格納 3 4 $RemTarget = Get-ChildItem -Path $移動元 -Recurse | Sort-Object $ソート | Select-Object FullName, Length -First $移動数 | Select-Object FullName 5 6 $RemTarget = $RemTarget.fullname 7 foreach ($rem in $RemTarget) { 8 move-Item $rem $移動先 -Force 9 } 10} 11ファイル移動 "J:\1" "J:\2" "-Descending LastWriteTime" 10 12}``` 13 14### 試したこと 15以下のコードの場合はうまくいったことを確認 16function ファイル移動($移動元, $移動先, $ソート, $移動数) { 17 #移動対象ファイルのフルパスを配列に格納 18 19 $RemTarget = Get-ChildItem -Path $移動元 -Recurse | Sort-Object -Descending $ソート | Select-Object FullName, Length -First $移動数 | Select-Object FullName 20 21 $RemTarget = $RemTarget.fullname 22 foreach ($rem in $RemTarget) { 23 move-Item $rem $移動先 -Force 24 } 25} 26ファイル移動 "J:\1" "J:\2" LastWriteTime" 10 27}``` 28

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

■"-Descending LastWriteTime" または "LastWriteTime" の引数でソート+移動する サンプルプログラム

PowerShell

1function ファイル移動($移動元, $移動先, $ソート, $移動数) { 2 if ( $ソート -match "-Descending" ){ 3 $RemTarget = Get-ChildItem -Path $移動元 -Recurse | Sort-Object -Descending ($ソート -split " ")[1] | Select-Object FullName, Length -First $移動数 | Select-Object FullName 4 }else{ 5 $RemTarget = Get-ChildItem -Path $移動元 -Recurse | Sort-Object $ソート | Select-Object FullName, Length -First $移動数 | Select-Object FullName 6 } 7 $RemTarget = $RemTarget.fullname 8 foreach ($rem in $RemTarget) { 9 move-Item $rem $移動先 -Force 10 } 11} 12 13ファイル移動 "J:\1" "J:\2" "-Descending LastWriteTime" 10 # ← 引数 -Descending LastWriteTime 14ファイル移動 "J:\1" "J:\2" "LastWriteTime" 10 # ← 引数 LastWriteTime

※引数を判定して分岐しています。
※テストしておりません。
※お手数ですが、動作の確認をお願いします。

投稿2023/05/28 13:04

ccc-

総合スコア328

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ハッシュテーブルと -Property オプションを使います。

powershell

1function ファイル移動($移動元, $移動先, $ソート, $移動数) { 2 $RemTarget = Get-ChildItem -Path $移動元 -Recurse | Sort-Object -Property $ソート | Select-Object FullName, Length -First $移動数 | Select-Object FullName 3 : 4} 5 6ファイル移動 "J:\1" "J:\2" @{Expression = "LastWriteTime"; Descending = $true} 10

投稿2023/05/28 09:45

melian

総合スコア19618

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問