23

検討:

PS Y:\> mkdir  C:/dog


    Directory: C:\


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         11/7/2013  10:59 PM            dog


PS Y:\> mkdir  C:/dog
New-Item : Item with specified name C:\dog already exists.
At line:38 char:24
+         $scriptCmd = {& <<<<  $wrappedCmd -Type Directory @PSBoundParameters }
    + CategoryInfo          : ResourceExists: (C:\dog:String) [New-Item], IOException
    + FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.NewItemCommand
4

5 に答える 5

19

使用する:

mkdir C:\dog -ErrorAction SilentlyContinue
于 2013-11-08T07:31:30.557 に答える
0

エラー メッセージを非表示にしないことをお勧めします (正当な理由がない限り)。ディレクトリを作成するだけでなく、ディレクトリが存在するかどうかを確認してください。もしそうなら、おそらくその内容を削除するか、別の名前を選ぶ必要がありますか? そのようです、

if (-not (test-path "c:\foobar") ) {
    write-host "c:\foobar doesn't exist, creating it"
    md 'c:\foobar'|out-null
} else {
    write-host "c:\foobar exists, no need to create it"
}
于 2013-11-08T07:14:34.770 に答える
0

-Forceあなたが言うように、エラーを抑制することは通常ベストプラクティスではありませんが、コマンドは以前に存在するかどうかを確認するよりもはるかに高速に実行されることを追加したかっただけです。

D:\ は RAM ディスクです。

Measure-Command {new-item "D:\NewFolder\NewSubFolder" -ItemType Directory -force}

最初の実行 (フォルダー オブジェクトの作成): 5 ミリ秒

2 回目の実行 (フォルダーが存在した後): 1 ミリ秒

Measure-Command {if (-not (test-path "D:\NewFolder\NewSubFolder") ) {
write-host "Directory doesnt exist, creating it"
md "D:\NewFolder\NewSubFolde"|out-null} else {
write-host "Directory exists, no need to create it"}}

最初の実行 (フォルダー オブジェクトの作成): 54 ミリ秒

2 回目の実行 (フォルダーが存在した後): 15 ミリ秒

ピーター、私の投稿を整理してくれてありがとう!あなたは男です!

于 2016-03-15T05:16:13.147 に答える