高手大哥帮忙啊,批处理中call返回值问题 20

高手大哥帮忙啊,很简单的功能,从filelist.txt读取文件列表,拼出文件全路径+文件名,然后截取全路径,判断该路径是否存在,不存在则mkdir,问题出在判断路径存在... 高手大哥帮忙啊,很简单的功能,从filelist.txt读取文件列表,拼出文件全路径+文件名,然后截取全路径,判断该路径是否存在,不存在则mkdir,问题出在判断路径存在这里,调用了一个isexist.bat,结果返回值一直是0,高手大哥帮忙啊;
isexist.bat内容:
@echo 输入路径%1
set tt=%~dp1
@echo 测试路径 %tt%
if exist %tt% goto :ok
goto :no
:no
exit /b 0
:ok
exit /b 1
main.bat内容
echo off
set filelist=filelist.txt
set preSourcePath=c:\
for /f %%f in (%filelist%) do (
call isexist.bat %preSourcePath%%%f
@echo 返回值为 %errorlevel% //就是这句一直输出0
)
pause
goto :eof
filelist.txt内容:
windows\hh.exe
nofolder\nofile.txt

帮忙啊
展开
 我来答
yyykkkyyyy
推荐于2018-04-13 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3294万
展开全部
不用那么复杂,只要一个批处理且主要代码只一句就行了
for /f "delims=" %%i in (filelist.txt)do if not exist "%%~dpi" md "%%~dpi"
看来是有编程基础的,帮你把所列的代码解析一下
set tt=%~dp1 是没必要再取个变量tt的可以直接用%~dp1
if exist %tt% goto :ok
如果路径含空格或&符会出错,应该把%tt%加引号,且前句也宜加引号set "tt=%~dp1"以避免尾部无意中加了空格
goto :no
:no
此两行可省去,因为顺序执行,另一可能性时已goto 跳开了
要说呢goto都没必要,直接
if exist "%~dp1" (exit /b 1)else exit /b 0
顺便说一下一般习惯上 0 为正常时的返回码
当然此段代码运行时没出错,并不能解除你的疑惑--为什么只返回0 ?
说明它总是判断不存在,就得配合那filelist.txt和当前路径来分析了
比如批处理是在d:\test下运行
则由 windows\hh.exe 行所提取的路径是d:\test\windows\
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式