2013-02-19 91 views
0

我有这个蝙蝠一个问题:文件批量更改路径

@echo off 

set CD1OLD=%CD% 
cd /d %~dp0 


%CD%\xxx.Http.Client.exe http://localhost:8081/aaa/comparer/aa/base/aa/compare >  debug_aaa_base.xml 
echo. 
%CD%\xxx.Http.Client.exe http://localhost:8081/aaa/comparer/aa/complessi/aa/compare > debug_aaa_complessi.xml 
echo. 
echo ****** LANCIO xxxx ****** 
%CD%\Lancio_xxxx.bat 
echo. 

这段代码后,我需要运行此:

echo ****** SPOSTA FILES ****** 
%CD%\Elaborazione_aaa_Spostamento_files.exe 
cd /d %CD1OLD% 

,但它不工作..这似乎第一个代码在执行代码本身时更改其执行路径,给第二个代码块执行造成问题。

特别是,如果我删除此行

%CD%\Lancio_xxxx.bat 

一切工作正常。但我也需要运行这一行!

有什么建议吗?在此先感谢

问候

回答

1

请注意,如果您只是从另一个调用.bat,则命令处理器不会返回给调用者。调用批处理不会恢复执行,“调用”就像是一个简单的goto,它转到引用的批处理文件。

如果更换

%CD%\Lancio_xxxx.bat 

call %CD%\Lancio_xxxx.bat 

那么该批处理文件执行之后,在那之后call线也将被执行的命令,这似乎是你在找什么。

0

尝试围绕执行Lancio_xxx.bat

行这些命令保存命令PUSHD POPD和和恢复当前目录分别

详情请参阅以下链接:

http://ss64.com/nt/pushd.html

http://ss64.com/nt/popd.html

+0

问题不是一个变化的工作目录。当从批处理脚本运行批处理脚本时,必须使用'call'(同步)或'start'(异步),否则控制将不会回到父脚本,并且该脚本中的其余命令将不会执行。 – 2013-02-19 19:49:20