标题: [文本处理] [已解决]批处理命令if怎样判断删除文件夹是否成功? [打印本页]
作者: gogo11 时间: 2013-1-18 15:02 标题: [已解决]批处理命令if怎样判断删除文件夹是否成功?
各位大侠,小小菜鸟有个问题- @echo off
- del "C:\Documents and Settings\Administrator\桌面\新建文件夹\11.txt"
- if %errorlevel% neq 0 goto aa
- :aa
- del "C:\Documents and Settings\Administrator\桌面\新建文件夹\33.txt"
复制代码
想要打到的目的非常的简单,就是在文件夹删除11.txt,如果删除成功就继续删除33.txt;如果不成功就跳出。可是无论怎么执行都是不管有没有11.txt,33都照删不误。我的目的其实就是上来执行一条del语句,得到他的返回值,成功下一步,不成功跳出。请高人指点!!谢谢啦
作者: hankerer 时间: 2013-1-18 15:42
:aa
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\33.txt"
这两行换一下呢?
作者: gogo11 时间: 2013-1-18 15:52
没太明白怎么换,总之挨行换了一遍,涛声依旧啊,还是在没有11的情况下删除33.txt
作者: gogo11 时间: 2013-1-18 16:00
关键是这个if %errorlevel%,他到底的没得到命令的返回值啊,怎么是1,是0都一样啊
作者: apang 时间: 2013-1-18 16:16
- @echo off
- del "C:\Documents and Settings\Administrator\桌面\新建文件夹\11.txt"
- if "%errorlevel%" neq "0" goto :eof
- del "C:\Documents and Settings\Administrator\桌面\新建文件夹\33.txt"
复制代码
作者: gogo11 时间: 2013-1-18 16:49
这个,我试了一下,还是删除33,我把if "%errorlevel%" neq "0" goto :eof 改成if "%errorlevel%" neq "1" goto :eof 了,结果是怎么也不删除33了,成功删除11后就不动了。如果不改还是0的话就无论如何都删除33
作者: gogo11 时间: 2013-1-18 16:51
我是希望执行删除11的语句后,如果成功就再删除33;如果不成够就跳出了,不要去管33
作者: BAT-VBS 时间: 2013-1-18 17:10
- @echo off
- cd /d "C:\Documents and Settings\Administrator\桌面\新建文件夹\"
- del "11.txt" && del 33.txt
复制代码
作者: gogo11 时间: 2013-1-18 17:10
我现在觉得问题就在if errorlevel上,他得到的不是del的返回值,我的问题是怎么得到del的返回把他赋给一个变量,再对这个变量if语句,应该就可以了,怎样得到del的返回值并赋值呢
作者: gogo11 时间: 2013-1-18 17:18
谢谢大家给我帮助。8楼是这样的,我这只是简化了一下我的问题,大体上可以简化为上面的语句,我的真实目的不是删除11或33,而是我要删除一个东西,如果能成,就进行下边的一系列动作,如果不成,就跳出,您这个语句我套不到真实情况里啊,我想的是得到del的返回值,赋给个变量,我说明白了吧,我这么都糊涂了
作者: gogo11 时间: 2013-1-18 17:20
问题是8楼我测试了一下,您这还是在没有11的情况下直接把33删除了啊
作者: ccdevil 时间: 2013-1-18 17:52
- for /r d:\cc\bat测试 %%i in (*.txt) do echo %%i >>log.txt
- findstr "11.txt" log.txt
- if %errorlevel% equ 0 (del "d:\cc\bat测试\11.txt" && del "d:\cc\bat测试\22.txt") else (echo 找不到11)
- del "d:\cc\bat测试\log.txt"
- pause
复制代码
路径和文件名自己改下把。。
作者: apang 时间: 2013-1-18 19:58
- @echo off
- pushd "C:\Documents and Settings\Administrator\桌面\新建文件夹\"
- del 11.txt 2>&1|find /v "">nul
- if "%errorlevel%" neq "0" del 33.txt
复制代码
作者: gogo11 时间: 2013-1-18 21:32
感谢ccdevil,可是我把每一个命令单独放到百度里差,连在一起也没明白你写的这个语句的意思,太丢人了。但是apang的语句我测试了,就是我要的意思,但是我还有点儿疑问,我把程序改了一下
@echo off
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\11.txt" 2>&1|find /v "">nul
if "%errorlevel%" neq "0"
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\33.txt"
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\44.txt"
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\55.txt"
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\66.txt"
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\77.txt"
程序在成功删除了11之后,就只删除了33,之后的44,55什么的就不管了,他难道不是应该直接顺序执行过来的吗?于是我就又改了一下
@echo off
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\11.txt" 2>&1|find /v "">nul
if "%errorlevel%" neq "0" goto aa
:aa
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\33.txt"
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\44.txt"
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\55.txt"
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\66.txt"
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\77.txt"
这下可好,还是不管有没有11,下边的都继续执行了,我又开始怀疑那个 if errorlevel的判断到底有没有效果,请问能让我在成功删除11后,顺序执行多个语句吗,谢谢
作者: gogo11 时间: 2013-1-18 21:45
不好意思,我知道到,是自己没弄明白,对不起啦,终于解决了!谢谢各位热心人了!!
作者: BAT-VBS 时间: 2013-1-18 21:53
回复 10# gogo11
希望以后能否直接说出完整问题,不要绕弯子。
作者: changedirectory 时间: 2013-12-12 09:26
虽然问题已经解决了,本人是批处理的新手,就当练习了。
无论txt文件是否存在,使用del删除的时候返回值都是0,所以才会一直执行下去。
看看这个行不行,请大侠指点:- @ECHO OFF
- for /l %%i in (11 11 99) do (
- if exist %%i.txt (del %%i.txt) else goto a
- )
- pause&exit
-
- :a
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |