问题描述
我在批处理文件中使用了robocopy,这些文件会自动更新我们的软件。
这是我当前使用的命令:
from multiprocessing import Process
import time
def f(x):
print("a",x)
time.sleep(1)
print("b",x)
if __name__ == '__main__':
for i in range(5):
p = Process(target=f,args=(i,))
p.start()
问题在于,如果配置文件不存在,我必须从源目录(在这种情况下为ROBOcopY "%source%" "%Destination%" /MIR /PURGE /E /NP /R:5 /LOG+:"%Destination%\Update.log" /TS /FP /TEE /XF "%Destination%\SettingsA.config" "%Destination%\SettingsB.config" "%Destination%\SettingsC.config" "%Destination%\Trace.log" "%Destination%\Error.log" "%Destination%\update.log" /XD "%Destination%\Logs"
,%source%\SettingsA.config
和%source%\SettingsB.config
中复制默认文件 >
当前,如果该配置文件将存在于源目录中,则它们将被覆盖在目标目录中。
由于源目录来自映射的网络驱动器,因此使用单个robocopy命令执行该目录会更好。
有可能吗?
解决方法
要演示我的意思,请测试每个配置文件是否存在,然后创建一个参数并排除它是否确实存在。
if exist "%Destination%\SettingsA.config" set "confa="%Source%\SettingsA.config""
if exist "%Destination%\SettingsB.config" set "confb="%Source%\SettingsB.config""
if exist "%Destination%\SettingsC.config" set "confc="%Source%\SettingsC.config""
ROBOCOPY "%Source%" "%Destination%" /MIR /PURGE /E /NP /R:5 /LOG+:"%Destination%\Update.log" /TS /FP /TEE /XF %confa% %confb% %confc% "%Destination%\SettingsA.config" "%Destination%\SettingsB.config" "%Destination%\SettingsC.config" "%Destination%\Trace.log" "%Destination%\Error.log" "%Destination%\update.log" /XD "%Destination%\Logs"
,
您可以仅将源复制到临时目录,将目标移至临时,然后将临时移至目标。