我必须将批处理脚本转换为PowerShell。我遇到了这几行代码,我不知道他们做了什么。有人可以解释一下,尤其是echo
语句和robocopy
吗?
set logdir=D:\Internal\Log
set runlog=%logdir%\run.log
set roboexe=robocopy /NJH /XX /NP
echo ^<!-- 1>>%runlog% 2>&1
echo Move-Copy - %account% %Time:/=% 1>>%runlog% 2>&1
echo Found files for %account% IN 1>>%runlog% 2>&1
%roboexe% "%fromdir%" "%historydir%" %wildcard% 1>>%runlog%
答案 0 :(得分:3)
echo
只是将输出打印到屏幕上。该命令也可以在PowerShell中运行,但它实际上是alias Write-Output
,它将输出发送到标准success stream /管道(如果没有其它地方可以去,那就是控制台/屏幕默认情况下。)
Robocopy
是一种高级复制实用程序。它具有超出Windows标准复制功能的一系列功能。记录here。
解释此行中的令牌:
echo ^<!-- 1>>%runlog% 2>&1
<
,>
和>>
为redirection operators。 ^
字符会转义<
字符,以便字面上使用而不是重定向。我相信!--
也只是字面印刷。
1>>
正在使用追加重定向将标准输出附加到%runlog%
中指定的文件。
2>&1
将错误输出流重定向到标准输出流,因此基本上错误也会写入runlog。