Rimraf-powershell脚本全局语法

Rimraf-powershell脚本全局语法,powershell,glob,Powershell,Glob,我想在powershell脚本中使用rimraf命令删除特定目录(名为“结果”)中的所有文件和子文件夹。我正在虚拟驱动器(“B”)上测试rimraf,需要使用网络路径,因此我的命令看起来像rimraf'\\PC name\B\Results\*',但它不起任何作用,我无法理解正确的语法。我尝试了许多不同的路径变体,但没有一个起作用。Node.js模块和CLI通常在Windows上执行自己的全局搜索,因此-给定参数'\\PC name\B\Results\*',作为逐字字符串,未经修改地传递给ri

我想在powershell脚本中使用rimraf命令删除特定目录(名为“结果”)中的所有文件和子文件夹。我正在虚拟驱动器(“B”)上测试rimraf,需要使用网络路径,因此我的命令看起来像
rimraf'\\PC name\B\Results\*'
,但它不起任何作用,我无法理解正确的语法。我尝试了许多不同的路径变体,但没有一个起作用。

Node.js模块和CLI通常在Windows上执行自己的全局搜索,因此-给定参数
'\\PC name\B\Results\*'
,作为逐字字符串,未经修改地传递给
rimraf
,这意味着
rimraf
.vhd
驱动器上不支持全局搜索

注意:
-G
命令行选项禁用全局绑定,但默认情况下已启用

解决方法是让PowerShell进行全局搜索

以下内容应该可以正常工作,但从
rimraf
v3.0.2/Node.js v14.15.12开始就不行了:

# !! Currently does NOT work - even though it should.
# CAVEAT: INSTANTLY DELETES ALL CONTENT IN THE TARGET DIR.
rimraf -G (Get-Item '\\PC name\B\Results\*' -Force).FullName
看起来,传递多个路径(调用
Get Item
将生成一个文件/目录名数组,其元素作为单个参数传递)当前已中断

因此,使用以下,但是速度很慢,因为对每个文件和目录分别调用
rimraf

# Should work, but is slow.
# CAVEAT: INSTANTLY DELETES ALL CONTENT IN THE TARGET DIR.
(Get-Item '\\PC name\B\Results\*' -Force).FullName | % { rimraf -G $_ }
当然,您也可以使用PowerShell自己的cmdlet

# CAVEAT: If you remove -WhatIf, instantly deletes all content in the target dir.
Remove-Item '\\PC name\B\Results\*' -Recurse -Force -WhatIf

请注意,无论用于删除的工具是什么,在Windows 10 20H2之前的Windows版本上删除目录子树可能会间歇性失败,这是由于以前文件删除的异步行为造成的-请参阅。

非常感谢您提供的所有信息和您的解决方案!“我很高兴听到这很有帮助,@JakubDlabka;我的荣幸。