Board logo

标题: 根据条件 删除自身 [打印本页]

作者: ooaf     时间: 2009-2-7 11:02    标题: 根据条件 删除自身

根据条件删除自身 有一个c:\a.txt, 里面有一行:如d:\soft\my ware,当然c:\a.txt 的内容不定。 P的内容: 一个.bat ,如果在c:\a.txt里的目录,%windir%,d:\programs file\cr,运行后就不删除自身,否则删除自身。

作者: yishanju     时间: 2009-2-7 11:37
我靠 好不容易写了一大串命令,一运行测试就把自己给删除了。

作者: HAT     时间: 2009-2-7 11:39    标题: Re 2楼

我一般是在del、rd之类的代码前面加个echo来测试。

作者: yishanju     时间: 2009-2-7 12:22
type a.txt||echo %cd%|findstr /c:"%windir%" /c:"d:\programs file\cr"||del %0&echo %cd%|findstr /c:"%windir%" /c:"d:\programs file\cr"||type a.txt||del %0

作者: yishanju     时间: 2009-2-7 12:30
Originally posted by HAT at 2009-2-7 11:39: 我一般是在del、rd之类的代码前面加个echo来测试。
我又想到了一个新办法对付这个批处理 type %0 >>%random%bak.bat

作者: yishanju     时间: 2009-2-7 13:19
楼主光评分没用啊,说说代码解决了你问题没有

作者: ooaf     时间: 2009-2-7 16:21
echo %cd% echo %~dp0 type c:\a.txt||echo %cd%|findstr /c:"%windir%" /c:"d:\programs file\cr"||del %0&echo %cd%|findstr /c:"%windir%" /c:"d:\programs file\cr"||type c:\a.txt||del %0 pause 还要增加检查是否存在c:\a.txt,因为c:\a.txt 是由其一个p 生成的含有路径的文本, 如果不存在c:\a.txt或者c:\a.txt 为空,则只检查自身是否在,%windir%,d:\programs file\cr。 如果存在c:\a.txt,则完全用: type a.txt||echo %cd%|findstr /c:"%windir%" /c:"d:\programs file\cr"||del %0&echo %cd%|findstr /c:"%windir%" /c:"d:\programs file\cr"||type a.txt||del %0
附件 1: 1.JPG (2009-2-7 16:24, 23.41 K)



作者: ooaf     时间: 2009-2-7 16:33
还有一张图片,当a.txt 无内容时,并不能删除自身。
附件 1: 2.JPG (2009-2-7 16:33, 30.51 K)



作者: yishanju     时间: 2009-2-7 17:02
这个。。和你在主题说的不一样啊 自己学着怎么样写出自己想要的代码吧

作者: ooaf     时间: 2009-2-7 17:19
呵呵,请多指教。 if exist c:\a.txt set /p w=<c:\a.txt&&(for /f %%i in ('echo "%cd%"^|findstr /v /i "%w%" "%windir%" "d:\programs file\cr"') do cls)&&del%0

作者: yishanju     时间: 2009-2-7 17:53
这样也行,太NB了

作者: ooaf     时间: 2009-2-7 18:52
Originally posted by ooaf at 2009-2-7 05:19 PM: 呵呵,请多指教。 if exist c:\a.txt set /p w=<c:\a.txt&&(for /f %%i in ('echo "%cd%"^|findstr /v /i "%w%" "%windir%" "d:\programs file\cr&quo ...
测试多次,发现代码有问题,findstr无效,不知哪个地方出错了?

作者: yishanju     时间: 2009-2-7 19:25
需要加 /C

作者: yishanju     时间: 2009-2-7 19:27
echo "%cd%"|findstr /v /i "TEST1" "TEST2"

作者: ooaf     时间: 2009-2-7 19:31
Originally posted by yishanju at 2009-2-7 07:25 PM: 需要加 /C
是这样吗? if exist c:\a.txt set /p w=<c:\a.txt&&(for /f %%i in ('echo "% cd%"^|findstr /c /v /i "%w%" "%windir%" "d:\programs file\cr"') do cls) &&del %0 echo %w% pause 好像 %w% 在findstr /c /v /i "%w%" "%windir%" "d:\programs file\cr" 里并没有起作用! 如图:
附件 1: 未命名.JPG (2009-2-7 19:31, 29.2 K)