裸露在我身边,因为我可能需要一段时间来描述我想要做的事情。
我需要一个可以运行的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 drive
customer2 - f drive 等
我希望这样做尽可能简单,以便可以在文本文件中添加/删除文件夹,因此不需要更改命令...
这可能...... 如果您需要任何进一步的信息,请告诉我。我确定这对于合适的人来说很容易,但是我已经在我头上了......
感谢
松鸦
答案 0 :(得分: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