Powershell robocopy在出错时重命名文件

时间:2017-10-11 07:19:40

标签: powershell robocopy

我正在尝试从目录中复制包含所有子目录和文件的文件。正如我已经发现的那样,可以使用robocopy轻松完成。

robocopy $source $dest $arg $logfile_temp

我的问题是,源目录中有一些文件(主要是 .png-files ),其名称中包含":",因为它们位于Linux -Server(包含时间戳)。

现在,我想将所有文件复制到另一个目录,每次发生错误时,由于名称中的":",文件应复制到临时位置,重命名({{1 }} - > ":")然后被复制到目标目录(因此原始文件基本保持不变)。

如果有人能回答这个问题,我会很棒:)

2 个答案:

答案 0 :(得分:0)

您可以按照以下路径重命名文件:

(a-b).Sign();

-whatif参数就好像。如果删除它,它将执行文件的实际重命名。

答案 1 :(得分:0)

我的最终脚本看起来像这样: 首先,我初始化一些变量:

$source = "..."
$temp = "..."
$dest = "..."
$arg = "..."
$logfile_temp = "..."
$logfile_dest = "..."

然后我将所有文件复制到临时目录:

robocopy $source $temp /e /Log+:$temp\copyLog.txt

之后,我遍历Temp-Directory中的所有文件,并在其名称中搜索带有“:”的文件:

Get-ChildItem -recurse | where {! $_.PSIsContainer} |   
    Rename-Item -NewName {$_.name -replace '#','.'}

最后,我可以将这些文件/目录复制到我的目的地目录中。

robocopy $temp $dest /e /Log+:$dest\copyLog.txt

另外,我正在将进程的输出记录到“copyLog.txt”。