经过一番谷歌搜索,网上的大多数帖子都在谈论 PowerShell 的好处,而使用 robocopy 的环境是 Windows Server 2016。因此,需要将原始包含两个命令行的批处理文件转换为其 PowerShell 版本。
将批处理版本的 robocopy 转换为 PowerShell 版本时需要注意哪些事项?由于 PowerShell 很新,而且是从头开始的。是否有任何 PowerShell 版本差异,如 ps ver1 ver2 ver3?如果使用 PowerShell 或增强版,有什么好处吗?
/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 的讨论及其答案