[解決済み] PowerShellコピースクリプトで複数の文字列を適切にフィルタリングする方法
質問
私は、以下の PowerShell スクリプトを使用しています。 この回答 の PowerShell スクリプトを使用して、ファイル コピーを行っています。問題は、フィルタを使用して複数のファイル タイプを含めたいときに発生します。
Get-ChildItem $originalPath -filter "*.htm" | `
foreach{ $targetFile = $htmPath + $_.FullName.SubString($originalPath.Length); `
New-Item -ItemType File -Path $targetFile -Force; `
Copy-Item $_.FullName -destination $targetFile }
は夢のようにうまくいきます。しかし、フィルターを使って複数のファイルタイプをインクルードしたいときに問題が発生します。
Get-ChildItem $originalPath `
-filter "*.gif","*.jpg","*.xls*","*.doc*","*.pdf*","*.wav*",".ppt*") | `
foreach{ $targetFile = $htmPath + $_.FullName.SubString($originalPath.Length); `
New-Item -ItemType File -Path $targetFile -Force; `
Copy-Item $_.FullName -destination $targetFile }
以下のようなエラーが出ます。
Get-ChildItem : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Filter'. Specified method is not supported.
At F:\data\foo\CGM.ps1:121 char:36
+ Get-ChildItem $originalPath -filter <<<< "*.gif","*.jpg","*.xls*","*.doc*","*.pdf*","*.wav*",".ppt*" | `
+ CategoryInfo : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.GetChildItemCommand
括弧がない、様々な反復がありますね。
-filter
,
-include
のように、インクルードを変数として定義します(例.
$fileFilter
のように)、毎回上記のようなエラーが発生し、常に次のようなものを指しています。
-filter
.
興味深い例外は、私がコード
-filter "*.gif,*.jpg,*.xls*,*.doc*,*.pdf*,*.wav*,*.ppt*"
. エラーはないのですが、結果が出ず、コンソールにも何も戻ってきません。私は、うっかりと暗黙の
and
をコーディングしてしまったのでしょうか?
では、私は何が間違っていて、どう修正すればいいのでしょうか?
どのように解決するのですか?
-フィルタ
は単一の文字列しか受け付けません。
-インクルード
は複数の値を受け付けますが
-パス
引数を指定します。トリックは
\*
をパスの末尾に追加し、その後に
-Include
で複数の拡張子を選択します。ちなみに、コマンドレットの引数には、スペースやシェル特殊文字が含まれていない限り、文字列のクオートは不要です。
Get-ChildItem $originalPath\* -Include *.gif, *.jpg, *.xls*, *.doc*, *.pdf*, *.wav*, .ppt*
これは $originalPath がバックスラッシュで終わっているかどうかに関係なく動作することに注意してください。なぜなら、複数の連続したバックスラッシュは一つのパスセパレータとして解釈されるからです。例えば、試してみてください。
Get-ChildItem C:\\\\\Windows
関連
-
[解決済み] Get-ADUserとフィルタを含むForEach-Objectループ
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] scpを使ってリモートからローカルにフォルダをコピーするにはどうしたらいいですか?
-
[解決済み] PowerShellでコードをコメントアウトする方法とは?
-
[解決済み] Javaでオブジェクトをコピーするにはどうしたらいいですか?
-
[解決済み] PowerShellで文字列と変数を連結する方法は?
-
[解決済み] Javaコレクションをフィルタリングする方法(述語に基づく)?
-
[解決済み] 現在のPowerShellスクリプトの場所を特定する最良の方法は何ですか?
-
[解決済み] PowerShellでスクリプトを終了させる
-
[解決済み】PowerShellスクリプトを実行する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AzureのAdd-AzureDiskが動作しない
-
[解決済み] PowerShellでファイルを一行ずつ読み込む
-
[解決済み] cmdletbinding()】とは何ですか、どのように機能するのですか?
-
[解決済み] Powershell ISE 内の別の PS1 スクリプトから PowerShell スクリプト PS1 を呼び出す
-
[解決済み] Powershell send-mailmessage - 複数の受信者にメールを送信する
-
[解決済み] PowerShellでコンソールに書き込むには?
-
[解決済み] powershellスクリプトで、最後に改行を入れずにWrite-Warningすることはできますか?
-
[解決済み] PowerShell モジュールを全ユーザーに持続的にインストールする
-
[解決済み] Windows PowerShellでファイルが存在するかどうかをチェックする?
-
[解決済み] グローバル変数名が関数に渡された変数である関数からPowerShellのグローバル変数を設定する