0

我需要一个可以运行以将数据从源复制到目标的 robocopy 脚本。我遇到的问题是我需要将某些文件夹从不同驱动器的源复制到目标服务器,该目标服务器也需要转到不同的驱动器。

我正在使用此脚本将单个文件夹复制到目标服务器(正在运行)

@echo off 
SET Day=%date:~6,4%.%date:~3,2%.%date:~0,2% 

SET _source=\\10.10.10.18\R$\User\customer1

SET _target=E:\customer1

SET _log=E:\test_%Day%_Replication_Log.txt 


SET _what=/MIR /COPYALL /B

SET _options=/NS /NC /NFL /NDL /R:0 /W:0 /RH:0615-1730 /MON:900 /MOT:30 /LOG+:"%_log%" 

robocopy %_source% %_target% %_what% %_options%

我在 R 驱动器上以及我希望像这样复制的其他驱动器上有许多文件夹,但理想情况下我不希望每个驱动器都有单独的作业,并且如果可能的话希望在一个批处理文件下运行它。

有没有办法在文本文档中指定源位置并让脚本读取它并将其传递给命令,我也可以指定此数据的目标,即:

customer1 - e 驱动器

customer2 - f 驱动器等

我希望这尽可能简单,以便可以从文本文件中添加/删除文件夹,这样就不需要更改命令。

这可能吗?

4

1 回答 1

0

我认为您将需要执行以下操作..

SET _source=\\10.10.10.18\R$\User\customer1
rem SET _source=C:\windows
SET _target=E:\customer1
SET _log=E:\test_%Day%_Replication_Log.txt 
SET _what=/MIR /COPYALL /B
SET _options=/NS /NC /NFL /NDL /R:0 /W:0 /RH:0615-1730 /MON:900 /MOT:30 /LOG+:"%_log%" 

for /f "tokens=1*delims=-" %%a in ('dir /B/ad/s %_source%\drive*') do (
robocopy %%a %_target% %_what% %_options%
)
pause

现在,我怀疑您需要做的是以下类似的事情。

注意奇怪的东西:“%~p0”——如果你去 CMD(命令行)并输入 FOR /? - 它会解释这些是什么意思..它就像帮助中的两三个屏幕..

SET _source=\\10.10.10.18\R$\User\customer1
rem SET _source=C:\windows
SET _target=E:\customer1
SET _log=E:\test_%Day%_Replication_Log.txt 
SET _what=/MIR /COPYALL /B
SET _options=/NS /NC /NFL /NDL /R:0 /W:0 /RH:0615-1730 /MON:900 /MOT:30 /LOG+:"%_log%" 

for /f "tokens=1*delims=-" %%a in ('dir /B/ad/s %_source%\drive*') do (
cd "%~p0%_source%\drive"
copy *.txt "%~p0 %_source%\drive"
FOR /F "delims=" %%A IN ('type %~p0ALIST.txt') do (
rem cd "%~p0%%A\%_target%"
rem copy *.txt "%~p0%%A\%_target%"
robocopy %%a %_target% %_what% %_options%
rem cd "%~p0%%A\drive"
)
pause
于 2013-09-20T21:18:42.607 回答