我在Powershell 1.0中有一个奇怪的事情,我不明白为什么Powershell会以这种方式做出反应.
情况:我用字母e在驱动器上创建了几个zip文件:
现在我想删除它们.但是我的e:驱动器上有更多的zip文件.所以我想只删除这个特定文件夹及其子文件夹中的文件夹.
我想要用于此的命令是:
PS E:\> Get-ChildItem -Path E:\Webdev\icons\ -Include *.zip -Recurse -Name -Force | Remove-Item -Force
Run Code Online (Sandbox Code Playgroud)
然而,在执行时,我得到了一堆错误,所有人都这么说
找不到路径E:\ test.zip,因为它不存在.
实际上,e下没有test.zip这样的文件:它存在于我递给脚本的icons文件夹下.
解决方案是我将目录更改为icons文件夹并在那里执行命令.
但这不符合逻辑.我希望能够说出应该删除文件的目录,然后才能删除它们.为什么Powershell开始在当前目录中查找文件对我来说是一个谜.
请问有人向我解释一下吗?
如果删除Remove-Item
管道末尾的末尾,您将看到返回的所有路径名都与您通过-Path
参数输入的路径相关Get-ChildItem
.因此Remove-Item
,在当前目录中查找所有路径Get-ChildItem
返回.
正如Capar建议的那样,-Name
参数是这里的问题.删除它可确保您Remove-Item
可以轻松找到可以找到文件的File对象:
Get-ChildItem -Path E:\Webdev\icons\ -Include *.zip -Recurse -Force | Remove-Item -Force
Run Code Online (Sandbox Code Playgroud)
将按预期工作.如果你可以用对象解决问题,请不要达到字符串级别:-)
归档时间: |
|
查看次数: |
775 次 |
最近记录: |