Robocopy:从变量源复制文件

时间:2014-03-10 14:58:59

标签: robocopy

我正在尝试使用Robocopy从网络驱动器复制带有文件的特定文件夹。 问题是,我想要复制的文件经常更新,并放在带有版本号的文件夹中。是否可以使用Robocopy从具有最高编号的文件夹中获取文件?

Ex:源路径如下所示: K:\程序\版本\ 6.7.0.144 \ '144'是经常更改的数字。 路径K:\ Program \ versions \包含所有版本,每个版本都在自己的文件夹中,如下所示: http://i.stack.imgur.com/zDL16.png

因此,每次运行脚本时,我都希望它从最新版本/最高编号中获取文件。

到目前为止,我的脚本看起来像这样:

robocopy \\K:\program\versions\6.7.0.*\bin\config C:\Target /e /z /A-:R

Robocopy不接受源路径中的*。那么,Robocopy是否可以实现这一点,还是必须采用不同的方法?

2 个答案:

答案 0 :(得分:0)

我唯一能建议使用Robocopy的是/ MAXAGE:标志。

否则我会在一个Powershell脚本中包装Robocopy来为我做目录选择。

$dirlist = "k:\program\version\6.7.0.1","k:\program\version\6.7.0.144","k:\program\version\6.7.0.77"
$pattern = [regex]'.*6\.7\.0\.(\d*)'
$maxvers = 0
foreach ($dirname in $dirlist) {
    $vers = $pattern.match( $dirname ).Groups[1].Value
    if($vers -gt $maxvers) { $maxvers = $vers }
}
$robodir = "k:\program\version\6.7.0.$maxvers\bin\config"
robocopy $robodir c:\Target /e /z /A-:R

答案 1 :(得分:0)

你不能单独使用robocopy。你必须编写一些脚本。 假设您的第一个版本已归零(如6.7.001),则很容易获得您请求的最高版本号。

我在下面提供了批量和片段的片段。的powershell。

批次:

set SRCPATH=K:\program\versions
for /f %%f in ('dir /b /ad /o-n %SRCPATH%') do set SRCVER=%%f & goto NEXT
:NEXT
echo # Version %SRCVER% will be used
robocopy %SRCPATH%\%SRCVER%\bin\config C:\Target /E /Z /A-:R /LOG:C:\backup.log

goto NEXT是在第一个元素后断开for循环,因为我们按名称排序,降序

Powershell的:

$SRCPATH = "K:\program\versions"
$SRCPATH = "D:\temp"
$SRCVER = (Get-ChildItem $SRCPATH | Where-Object { $_.PsISContainer } | Sort-Object -Property Name -Descending | Select-Object -First 1).FullName
$SRCFULL= $SRCVER + '\bin\config'
echo "# Version $SRCVER will be used"
& robocopy $SRCFULL C:\Target /E /Z /A-:R /LOG:C:\backup.log

HTH