防止 Robocopy 到默认文件夹模式到 d--hs

Prevent Robocopy to default folder mode to d--hs

简介

我正在使用使用 Robocopy 的脚本备份一些 USB 驱动器。它将 USB 上的文件放到外部硬盘驱动器上的一个以备份日期命名的文件夹中。当我在文件资源管理器中查看外部硬盘驱动器时,我找不到备份。但是,在 PowerShell 中执行 'dir -force' 时,我可以看到文件确实存在: 请注意,我丢失的文件夹处于模式 d--hs。

问题

如何防止 Robocopy 复制到模式 d--hs 文件夹而不是 d----?

代码

$Day = "{0:yyyy-MM-dd}" -f (get-date)

$usb1 = 'E:'
$usb2 = 'F:'
$usb3 = 'H:'
$usb4 = 'I:'
$usb5 = 'J:'
$usb6 = 'K:'

$usblist = $usb1,$usb2,$usb3,$usb4,$usb5,$usb6

$usblist | ForEach-Object -Parallel {
$usb = $_
$Day = "{0:yyyy-MM-dd}" -f (get-date)
Robocopy /z /r:3 /w:3 /E "$usb" "U:$Day" *.png /S |Out-Null|  Out-Default  
Robocopy /z /r:3 /w:3 /E "$usb" "X:$Day" *.png /S |Out-Null| Out-Default 
Robocopy /z /r:3 /w:3 /E "$usb" "Y:$Day" *.png /S |Out-Null| Out-Default 
}-ThrottleLimit 6

系统信息

OS: Windows 11

Powershell:7.3.0-preview.3

正好有一个线程的答案。

喜欢在我的问题下的评论中提到的@Lee_Daily 使用例如c: 导致这个问题。首先将文件移动到不同的文件夹是一个解决方案。

我找到的另一个解决方案是使用 attrib 命令删除 HS。

attrib -H -S Y:\*.* /S /D

类似问题

在调查这个问题时,我还发现这个线程可能有帮助:After Robocopy, the copied Directory and Files are not visible on the destination Drive

最终代码

$Day = "{0:yyyy-MM-dd}" -f (get-date)

$usb1 = 'E:'
$usb2 = 'F:'
$usb3 = 'H:'
$usb4 = 'I:'
$usb5 = 'J:'
$usb6 = 'K:'

$usblist = $usb1,$usb2,$usb3,$usb4,$usb5,$usb6

$usblist | ForEach-Object -Parallel {
$usb = $_
$Day = "{0:yyyy-MM-dd}" -f (get-date)
Robocopy /z /r:3 /w:3 /E "$usb" "U:$Day" *.png /S |Out-Null| Out-Default  
Robocopy /z /r:3 /w:3 /E "$usb" "X:$Day" *.png /S |Out-Null| Out-Default 
Robocopy /z /r:3 /w:3 /E "$usb" "Y:$Day" *.png /S |Out-Null| Out-Default 
}-ThrottleLimit 6

attrib -H -S U:\*.* /S /D
attrib -H -S X:\*.* /S /D
attrib -H -S Y:\*.* /S /D