标题: [文件操作] [已解决]判断文件是否存在的BAT批处理错在哪里了? [打印本页]
作者: BS0小陈 时间: 2013-12-31 15:36 标题: [已解决]判断文件是否存在的BAT批处理错在哪里了?
- @echo off
- setlocal enabledelayedexpansion
- set /a num=0
- for /r %~dp0 %%i in (*.txt) do (
- echo %~dp0%%~nxi
- set "name=%~dp0%%~nxi"
- :aa
- if not exist %name% (
- set "name=%~dp0%%num%%~nxi"
- goto aa
- ) else (
- set /a num=0
- echo move
- )
- echo !name!
- )
- pause
复制代码
为什么一闪而过。删除掉好像是
作者: BS0小陈 时间: 2013-12-31 16:02
好像是if的问题,我单独拿出来时了是
这个运行可以:- if 1==1 ( echo 11 ) else ( echo 22 )
复制代码
这个运行可以:- if not exist %name% ( echo 111)
复制代码
这个就不行了????:- if not exist %name% ( echo 111) else ( echo 222 )
复制代码
作者: apang 时间: 2013-12-31 16:12
for中带goto,没有你这种搞法
作者: DAIC 时间: 2013-12-31 16:15
:aa 这种标签不能放在for循环内部
作者: BS0小陈 时间: 2013-12-31 16:22
回复 4# DAIC
恩知道了,去掉后还是不行。问题见2楼
作者: DAIC 时间: 2013-12-31 17:22
回复 5# BS0小陈
请把修改之后的完整代码贴出来
作者: BS0小陈 时间: 2014-1-2 08:53
回复 6# DAIC - @echo off
- setlocal enabledelayedexpansion
- set /a num=0
- for /r %~dp0 %%i in (*.txt) do (
- echo %~dp0%%~nxi
- set "name=%~dp0%%~nxi"
- if not exist %name% ( echo 111) else ( echo 222 )
- echo !name!
- )
- pause
复制代码
啊else去掉就可以了,为什么???
作者: DAIC 时间: 2014-1-2 09:03
回复 7# BS0小陈
不知道你想问什么,你这个代码里面没有去掉else啊。
作者: terse 时间: 2014-1-2 12:12
这里 %name% 是否起作用呢 为什么不用 !name!
作者: BS0小陈 时间: 2014-1-3 10:01
回复 9# terse
谢谢,就是因为这个原因了~~~~~~
作者: 悬崖之树 时间: 2014-1-4 22:52
- @echo off
- if not exist %qdj% (echo ok)
- pause
复制代码
为什么上面的代码会出错呢?原因是由于qdj这个变量不存在,所以cmd就预处理成:复制代码
意思就是 如果不存在 (echo 这个文件的话,就执行 ok) 这个命令,而ok)不是可运行的程序或命令,所以就报错了。
作者: lifei259 时间: 2014-1-5 23:09
@echo off
setlocal enabledelayedexpansion
set /a num=0
for /r %~dp0 %%i in (*.txt) do (
echo %%i
set "name=%%i"
if not exist !name! ( echo 111) else ( echo 222 )
echo !name!
)
pause
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |