[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理命令if怎样判断删除文件夹是否成功?

各位大侠,小小菜鸟有个问题
  1. @echo off
  2. del "C:\Documents and Settings\Administrator\桌面\新建文件夹\11.txt"
  3. if %errorlevel% neq 0 goto aa
  4. :aa
  5. del "C:\Documents and Settings\Administrator\桌面\新建文件夹\33.txt"
复制代码
想要打到的目的非常的简单,就是在文件夹删除11.txt,如果删除成功就继续删除33.txt;如果不成功就跳出。可是无论怎么执行都是不管有没有11.txt,33都照删不误。我的目的其实就是上来执行一条del语句,得到他的返回值,成功下一步,不成功跳出。请高人指点!!谢谢啦
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

:aa
del "C:\Documents and Settings\Administrator\桌面\新建文件夹\33.txt"

这两行换一下呢?

TOP

没太明白怎么换,总之挨行换了一遍,涛声依旧啊,还是在没有11的情况下删除33.txt

TOP

关键是这个if %errorlevel%,他到底的没得到命令的返回值啊,怎么是1,是0都一样啊

TOP

  1. @echo off
  2. del "C:\Documents and Settings\Administrator\桌面\新建文件夹\11.txt"
  3. if "%errorlevel%" neq "0" goto :eof
  4. del "C:\Documents and Settings\Administrator\桌面\新建文件夹\33.txt"
复制代码

TOP

这个,我试了一下,还是删除33,我把if "%errorlevel%" neq "0" goto :eof 改成if "%errorlevel%" neq "1" goto :eof 了,结果是怎么也不删除33了,成功删除11后就不动了。如果不改还是0的话就无论如何都删除33

TOP

我是希望执行删除11的语句后,如果成功就再删除33;如果不成够就跳出了,不要去管33

TOP

  1. @echo off
  2. cd /d "C:\Documents and Settings\Administrator\桌面\新建文件夹\"
  3. del "11.txt" && del 33.txt
复制代码

TOP

我现在觉得问题就在if errorlevel上,他得到的不是del的返回值,我的问题是怎么得到del的返回把他赋给一个变量,再对这个变量if语句,应该就可以了,怎样得到del的返回值并赋值呢

TOP

谢谢大家给我帮助。8楼是这样的,我这只是简化了一下我的问题,大体上可以简化为上面的语句,我的真实目的不是删除11或33,而是我要删除一个东西,如果能成,就进行下边的一系列动作,如果不成,就跳出,您这个语句我套不到真实情况里啊,我想的是得到del的返回值,赋给个变量,我说明白了吧,我这么都糊涂了

TOP

问题是8楼我测试了一下,您这还是在没有11的情况下直接把33删除了啊

TOP

  1. for /r d:\cc\bat测试 %%i in (*.txt) do echo %%i >>log.txt
  2. findstr "11.txt" log.txt
  3. if %errorlevel% equ 0 (del "d:\cc\bat测试\11.txt" && del "d:\cc\bat测试\22.txt") else (echo 找不到11)
  4. del "d:\cc\bat测试\log.txt"
  5. pause
复制代码
路径和文件名自己改下把。。

TOP

  1. @echo off
  2. pushd "C:\Documents and Settings\Administrator\桌面\新建文件夹\"
  3. del 11.txt 2>&1|find /v "">nul
  4. if "%errorlevel%" neq "0" del 33.txt
复制代码
1

评分人数

TOP

感谢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后,顺序执行多个语句吗,谢谢

TOP

不好意思,我知道到,是自己没弄明白,对不起啦,终于解决了!谢谢各位热心人了!!

TOP

返回列表