2014-04-16 12 views
0

我试图写一个测试bat文件,将做到以下几点:如何运行一组平行批处理文件顺序

  • 从服务器下载
  • 文件上传文件到同一台服务器

我需要三台笔记本电脑同时执行下载和上传。因此,我创造这样一个名为3-chanD.bat的脚本:

*echo /////////3-channel-Downloading//////// 
start cmd.exe /k >time2 timeit chan6D.bat 
start cmd.exe /k >time3 timeit chan11D.bat 
start cmd.exe /k >time1 timeit chan1D.bat* 

chan6D.bat是卑鄙的脚本应对从服务器文件到我的笔记本电脑之一:

*xcopy "C:\Documents and Settings\All Users\Documents\test" "\\192.168.0.102\SharedDocs\test" /Y /E /S* 

一样chan1D。 bat和chan11D.bat:

*echo /////////channel 6 Downloading//////// 
xcopy "C:\Documents and Settings\All Users\Documents\test" "\\192.168.0.102\SharedDocs\test" /Y /E /S* 
*echo /////////channel 11 Downloading//////// 
xcopy "C:\Documents and Settings\All Users\Documents\test" "\\192.168.0.104\SharedDocs\test" /Y /E /S* 

上传脚本完成相反的工作。

问题是我需要坐在笔记本电脑旁边等待这三台笔记本电脑完成下载,然后手动运行上传脚本。我试着写一个脚本:

*@echo off 
echo /////////3-channel-Downloading//////// 
call 3-chanD.bat 
echo /////////3-channel-Uploading//////// 
call 3-chanU.bat 
pause* 

,但它只是运行3-chanD.bat和3 chanU.bat在第二。它不会等到下载完成。 有没有办法同时执行一组命令,然后再执行另一组命令并行?

+0

我建议在客户端运行批处理文件。您可以让每个客户机等待文件在服务器上存在,以便同步进程。然后,只要在服务器上创建文件,每个客户端都会开始下载并在下载完成后立即开始上传。 –

回答

0

让每个批处理文件都创建一个标志文件,执行xcopy,并在xcopy完成时删除标志文件。

type nul > "%temp%\xcopy1.tmp" 
xcopy "C:\Documents and Settings\All Users\Documents\test" "\\192.168.0.102\SharedDocs\test" /Y /E /S 
del "%temp%\xcopy1.tmp" 

启动的批处理文件可以检查循环中是否存在所有三个标志文件,并在不再存在时启动上载过程。