从 robocopy 批处理版本到 robocopy 的 PowerShell 版本的转换/注意事项如何?

从 robocopy 批处理版本到 robocopy 的 PowerShell 版本的转换/注意事项如何?

经过一番谷歌搜索,网上的大多数帖子都在谈论 PowerShell 的好处,而使用 robocopy 的环境是 Windows Server 2016。因此,需要将原始包含两个命令行的批处理文件转换为其 PowerShell 版本。

  1. 将批处理版本的 robocopy 转换为 PowerShell 版本时需要注意哪些事项?由于 PowerShell 很新,而且是从头开始的。是否有任何 PowerShell 版本差异,如 ps ver1 ver2 ver3?如果使用 PowerShell 或增强版,有什么好处吗?

  2. /b 模式是干什么用的?微软官方网站好像没有提供详细的信息……

批处理命令如下:

//get the locale independent time

    FOR /F %%A IN ('WMIC OS GET LocalDateTime ^| FINDSTR \.') DO @SET D=%%A

//unluckily could not find details of /b backup option to find out what is /b mode working for?

    robocopy X:\dat Y:\dat /v /xo /xa:sh /xj /unicode /mov /b /r:1 /w:1 /LOG+:C:\log\%D:~0,4%%D:~4,2%%D:~6,2%.log /xd "$RECYCLE.BIN" "System Volume Information"

答案1

PowerShell 并不新鲜。它已经存在了 10 多年,并且现在跨平台,Win / OSX / Linux。

Robocopy (robocopy.exe) 是一个独立的可执行文件,无论您使用哪种脚本/shell 语言。您不需要 .bat、.cmd、.ps1 脚本即可使用它。您可以直接使用它。

PS 有自己的复制(Copy-Item)和删除(Remove-Item)cmdlet,但是在大多数情况下,robocopy 是首选。

您可以像现在一样继续使用 robocopy,即使在 PS 中,尽管处理开关和参数有点不同,这取决于您在脚本中执行的操作。

PS 命令提示符/consolehost (powershell.exe) 可用于替换 DOS 命令提示符。您将以几乎相同的方式使用它。但是,如果您使用脚本开发工具/编辑器、ISE (powershell_ise.exe)、Visual Studio Code、Notepad++ 等,则需要更改批处理文件思维方式。

请参阅有关 PS 和 Robocopy 的讨论及其答案

如何让 robocopy 在 powershell 中运行?

相关内容