防止 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
简介
我正在使用使用 Robocopy 的脚本备份一些 USB 驱动器。它将 USB 上的文件放到外部硬盘驱动器上的一个以备份日期命名的文件夹中。当我在文件资源管理器中查看外部硬盘驱动器时,我找不到备份。但是,在 PowerShell 中执行 'dir -force' 时,我可以看到文件确实存在:
问题
如何防止 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