我有一个目录C:\temp\test\
,其中包含三个DLL,我称之为First.dll,Second.dll,Third.dll。我想创建以每个DLL命名的子目录。
这是我到目前为止所尝试的:
$dirName = "Tenth"
new-item $dirName -ItemType directory
有效。它创建了一个名为“第十”的子目录。
这也有效:
(get-childitem -file).BaseName | select $_
它返回:
First
Second
Third
我已检查该命令的输出类型,它告诉我“select $ _”的类型为System.String。
现在这个位不起作用:
(get-childitem -file).BaseName | new-item -Name $_ -ItemType directory
我重复了三次以下错误:
new-item : An item with the specified name C:\temp\test already exists.
At line:1 char:34
+ (get-childitem -file).BaseName | new-item -Name $_ -ItemType directory
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceExists: (C:\temp\test:String) [New-Item], IOException
+ FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.NewItemCommand
我正在执行命令的当前文件夹是C:\temp\test\
。
我无法在互联网上找到任何类似的例子来告诉我哪里出错了。任何人都可以给我任何指示吗?欢呼声。
答案 0 :(得分:2)
现在这个位不起作用:
(get-childitem -file).BaseName | new-item -Name $_ -ItemType directory
这样,它可以工作,不需要ForEach-Object
:
(dir -file).BaseName|ni -name{$_} -ItemType directory -WhatIf
答案 1 :(得分:1)
$_
引用管道中的每个项目,因此您需要通过管道ForEach-Object
让您的线路正常工作,如下所示:
(get-childitem -file).BaseName | ForEach-Object {new-item -Name $_ -ItemType directory}
这将在当前powershell目录中创建项目,如果要在其他位置创建文件夹,也可以指定-Path
。
(get-childitem -file).BaseName | ForEach-Object {new-item -Name $_ -Path C:\MyFolder -ItemType directory}