高手大哥帮忙啊,批处理中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
帮忙啊 展开
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
帮忙啊 展开
1个回答
展开全部
不用那么复杂,只要一个批处理且主要代码只一句就行了
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\
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\
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询