2

次のように、Powershell V2.0 コマンドラインから名前を変更して単純なコピーを実行しようとしています。

Copy-Item my_file.* my_file_old.*

これは DOS 版と同じように機能すると思います。

copy my_file.* my_file_old.*

ただし、「パスに不正な文字があります」という苦情で失敗しています。ワイルドカード*を特定のファイル番号 (1 など) に置き換えると、問題なく動作します。

私は基本的にそのDOSバージョンを複製しようとしていると思いますが、Powershellでは、-Excludeこの基本バージョンを整理したらパラメーターを使用したいと思います。

私は何を間違っていますか?別のフォーラムのいくつかの投稿で、V2.0 ではワイルドカードがサポートされていないことが示唆されていましたが、信じられません。それは、Microsoft が「Windows の新しいバージョンをリリースしたばかりですが、キーボードとマウスをサポートするのを忘れていた」と言っているようなものです。

4

3 に答える 3

3

ヘルプを見ると、Copy-Itemワイルドカードをサポートするパラメーターとサポートしないパラメーターがわかります。 -Destinationはワイルドカードをサポートしていません:

-Destination 新しい場所へのパスを指定します。コピーしたアイテムの名前を変更するには、値に新しい名前を含めます。

  Required?                    false
  Position?                    2
  Default value
  Accept pipeline input?       true (ByPropertyName)
  Accept wildcard characters?  false

ほんの少しのスクリプトで、やりたいことを実行できます。

Get-ChildItem my_file.* | Copy-Item -Dest {$_.basename + "_old" + $_.extension} -WhatIf

-WhatIfファイルが正しくコピーされることを確認したら、パラメータを削除します。

于 2013-11-05T17:40:43.737 に答える
2

ワイルドカードは、適切に使用することを前提として、確実にサポートされています。送信先のワイルドカードは奇妙で、ほとんどの場合、必要なものではありません。そして、ファイル(またはファイルのグループ)をそれ自体にコピーすること(これはここで行っていることです-最初のパラメーター名を指定しない場合Copy-Item、最初のパラメーター名がソースであり、2番目のパラメーター名が宛先です)は、ほぼ確実にあなたが望むものではありません.

copy-item myFile.* -destination DESTPATH

また

get-childitem -filter myFile.* | Copy-Item -destination DESTPATH
于 2013-11-05T16:34:11.493 に答える
1

一連の .jpg ファイルの名前を一連の番号のリスト [001.jpg、002.jpg など] に変更する例を次に示します。

get-childitem *.jpg | foreach-object -begin {$count=1} -process {rename-item -path $_.FullName -newname ('{0:000}.jpg' -f $count++)}

*.jpg と '{0:000}.jpg' の部分を調整することで、ニーズに合わせてこれを適応させることができます

于 2013-11-05T16:28:31.500 に答える