制作功能性的 Robocopy 备份脚本?

制作功能性的 Robocopy 备份脚本?

我无论如何都无法让这个东西在我正在使用的新用户笔记本电脑上运行。我希望有人能帮忙。我一直在尝试搜索论坛和 YouTube 视频,但如果有人能帮助我处理脚本语言/输入,那将非常有帮助。我甚至联系了之前的 IT 管理员,但并没有得到完全解决。我将从我一直尝试在 CMD 或 PowerShell 中运行的 Robocopy 命令以及与之前的 IT 人员就此进行的对话开始。

这是我目前得到的结果。我尝试过在文件路径目录中使用和不使用“”引号。我收到的大多数输出​​错误消息是:错误:无效参数 #3:“\locutionsrv1\Backups\kmcqueen_Backups”

robocopy "C:\Users\Kristi McQueen\" "Z:\\locutionsrv1\Backups\%kmcqueen%_Backups\" *.* /V /S /E /DCOPY:DA /COPY:DAT /Z /XJD /XA:SH /MT:8 /R:2 /W:15 > "C:\Users\Kristi McQueen\Desktop\externalbackup.log"

编辑:

在第一条注释后运行更正后的命令后,我确实在桌面上获得了生成的日志文件,其中包含以下消息:

2023/01/04 10:49:36 错误 123 (0x0000007B) 访问源目录 C:\Users\Kristi Test" \locutionsrv1\Backups\Kristi\ 文件名、目录名或卷标语法不正确。

然后,当我尝试在 PowerShell 中使用 %USERNAME% 而不是实际用户的名称运行命令时,我收到以下错误消息:

PS C:\Users\Kristi Test> robocopy "C:\Users\%username%\" "\\locutionsrv1\Backups\%USERNAME%_Backups\" *.* /V /S /S /DCOPY:DA /COPY:DAT /Z /XJD /XA:SH /MT:8 /R:2 /W:15 > "C:\Users\%USERNAME%\Desktop\externalbackup.log"
out-file : Could not find a part of the path 'C:\Users\%USERNAME%\Desktop\externalbackup.log'.
At line:1 char:1
+ robocopy "C:\Users\%username%\" "\\locutionsrv1\Backups\%USERNAME%_Ba ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (:) [Out-File], DirectoryNotFoundException
    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand

这令人难以置信地沮丧和困惑,因为我确定这些文件夹/文件存在并且访问或权限没有问题,对吗?

编辑2:1/5/23:

这真是太令人沮丧了!我真想拔掉自己的头发!我想,我让以下命令工作了一会儿:robocopy C:\Users\ \\locutionsrv1\Backups\%USERNAME%\ *.* /V /S /S /DCOPY:DA /COPY:DAT /Z /XJD /XA:SH /MT:8 /R:2 /W:15

但是,现在它不起作用了。当我检查服务器上的目标文件夹以查看备份的内容时,文件夹名为 %USERNAME%,而不是实际用户的名称!而且它不会像我最初打算的那样在用户桌面上生成日志文件。

我想撞墙。现在甚至那个原本有效的命令也不再起作用了。在 CMD 中,我又收到消息:“错误:无效参数 #3:“测试””。

在 PowerShell 中我得到:

2023/01/05 14:19:04 错误 1326 (0x0000052E) 创建目标目录 \locutionsrv1\Backups\ 用户名或密码不正确。PS C:\Windows\system32> robocopy "%userprofile%" "\locutionsrv1\Backups%USERNAME%_Backups"/V /S /E /DCOPY:DA /COPY:DAT /Z /XJD /XA:SH /MT:8 /R:2 /W:15 > “%UserProfile%\Desktop\externalbackup.log” out-file:找不到路径“C:\Windows\system32%UserProfile%\Desktop\externalbackup.log”的一部分。位于行:1 字符:1

  • robocopy“%userprofile%”“\locutionsrv1\Backups%USERNAME%_Backups”...
  •   + CategoryInfo          : OpenError: (:) [Out-File], DirectoryNotFoundException
      + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
    

答案1

看起来你对某些语法感到困惑。你想要robocopy "source" "destination" [options]

  • 应引用来源和目的地如果有空格。不要将两者放在同一组引号中

  • 百分比符号表示变量名。有一些自动的变量名,例如%username%%userprofile%。字面上的意思是“用户名”,不要将用户的名字放在那里。

  • 驱动器号与网络路径:本地驱动器的路径使用 格式C:\。网络文件夹 (UNC) 路径使用 格式\\servername\foldername\。如果您有一个映射到网络共享的驱动器,则只需使用驱动器号,例如Z:\不要同时使用喜欢Z:\\servername\etc\

尝试按原样执行此操作 - 请注意,用户名不在命令中。我用它%userprofile%来获取该文件夹的路径:

robocopy "%userprofile%" "\\locutionsrv1\Backups\%USERNAME%_Backups\" *.* /V /S /E /DCOPY:DA /COPY:DAT /Z /XJD /XA:SH /MT:8 /R:2 /W:15 > "%UserProfile%\Desktop\externalbackup.log"

确保目标文件夹对于该用户名确实存在。


在 powershell 中,变量格式不同,"C:\Users\%USERNAME%\"变为"C:\Users\$env:USERNAME\"

相关内容