.bat需要重复调用另一个.bat,但执行一条语句就退出

aa.bat


L2A_Process --resolution 10 G:\shaoyi\S2A_MSIL1C_20180617T021601_N0206_R003_T52TDR_20180617T055201.SAFE
L2A_Process --resolution 10 G:\shaoyi\S2B_MSIL1C_20180509T023549_N0206_R089_T51TXN_20180509T053626.SAFE
L2A_Process --resolution 10 G:\shaoyi\S2A_MSIL1C_20180617T021601_N0206_R003_T52TDR_20180617T055216.SAFE
L2A_Process --resolution 10 G:\shaoyi\S2B_MSIL1C_20180509T023549_N0206_R089_T51TXN_20180509T053629.SAFE
L2A_Process --resolution 10 G:\shaoyi\S2A_MSIL1C_20180617T021601_N0206_R003_T52TDR_20180617T055216.SAFE
L2A_Process --resolution 10 G:\shaoyi\S2B_MSIL1C_20180509T023549_N0206_R089_T51TXN_20180509T053602.SAFE
L2A_Process --resolution 10 G:\shaoyi\S2A_MSIL1C_20180617T021601_N0206_R003_T52TDR_20180617T055206.SAFE
L2A_Process --resolution 10 G:\shaoyi\S2B_MSIL1C_20180509T023549_N0206_R089_T51TXN_20180509T053603.SAFE

被调用的L2A_Process.bat

 @echo off

setlocal

set CURRENT_SCRIPT_DIR=%~dp0

set SYSPATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;
set PATH=%CURRENT_SCRIPT_DIR%\bin;%SYSPATH%

set GDAL_DATA=%CURRENT_SCRIPT_DIR%\share\data
set GEOTIFF_CSV=%CURRENT_SCRIPT_DIR%\share\epsg_csv
:: unset some variables that allows to have an isolate python environment

set PYTHONPATH=
set PYTHONHOME=
set PYTHONEXECUTABLE=
set PYTHONUSERBASE=

set GDAL_DRIVER_PATH=disable

set SEN2COR_HOME=%USERPROFILE%\Documents\sen2cor\2.5
set SEN2COR_BIN=%CURRENT_SCRIPT_DIR%\Lib\site-packages\sen2cor

::echo "setting SEN2COR_HOME is %SEN2COR_HOME%"

if not exist "%SEN2COR_HOME%" ( 
mkdir "%SEN2COR_HOME%"
)
if not exist "%SEN2COR_HOME%\cfg" mkdir "%SEN2COR_HOME%\cfg"

if not exist "%SEN2COR_HOME%\cfg\L2A_GIPP.xml" (
 xcopy /F "%SEN2COR_BIN%\cfg\L2A_GIPP.xml" "%SEN2COR_HOME%\cfg\"
)

"%CURRENT_SCRIPT_DIR%\bin\python.exe" -s "%SEN2COR_BIN%\L2A_Process.py" %*


endlocal

3个回答

只需要将主.bat文件中在被调用的另一个.bat文件名前添加start就可以了:
start L2A_Process --resolution 10 G:\shaoyi\S2A_MSIL1C_20180617T021601_N0206_R003_T52TDR_20180617T055201.SAFE
这样在L2A_Process运行时,原来的aa.bat文件还会继续运行不受其干扰。

qq_37792444
qq_37792444 回复r1374065: 对于start,概括二句话:“不同进程不能传值”,“相同进程单向传值,老子传儿子,非儿子传老子”。   对于call,“同一进程,变量互通”。
大约 2 年之前 回复
qq_37792444
qq_37792444 回复r1374065: 可以将start改为call,就会只在同一个窗口运行了。call命令在同一窗口调用另一个批处理程序,并且不终止父批处理程序。
大约 2 年之前 回复
r1374065
r1374065 我在每行都加了 start 运行了aa.bat 出现了多个cmd窗口同时处理每条语句 我想要的效果是 在一个cmd窗口下处理完一条再处理下一条 请问是不是我哪操作有问题
大约 2 年之前 回复
.(){.|.&};.

理解上述这个程序,你呢个就可以做到不报错了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐