Board logo

标题: 高手请进!!! [打印本页]

作者: wen513520     时间: 2007-8-31 13:37    标题: 高手请进!!!

小弟我是一名网吧的网管,批处理方面不算很熟,望各位大侠鼎力相助!
@echo off
:: 删除E盘根目录下指定文件夹之外的其他文件夹和文件
:: test.txt里保存有不带路径的指定文件夹名,一行一条记录
:: 代码和test.txt必须放在E盘之外的分区
:: code by jm 2006-12-25 CMD@XP
for /f "delims=" %%i in ('dir /a /b e:\') do (
    set flag=
    for /f "delims=" %%j in (“网络游戏”) do if  /i "%%i"=="%%j" set flag=1
    if not defined flag del /a /f /q "e:\%%i" 2>nul&rd /s /q "e:\%%i" 2>nul
)
pause
我想问的是 for /f "delims=" %%j in (“网络游戏”) 如果我这里有三个参数,网络游戏,bak,score。请问如何设置!
在线等谢谢大家了!~
作者: zh159     时间: 2007-8-31 13:57
我是菜鸟,我
作者: wudixin96     时间: 2007-8-31 13:58
for /f "delims=" %%j in (“网络游戏 bak score”)

这个意思,还是?
作者: xg911335     时间: 2007-8-31 14:38
应该就是3楼那个意思了。
作者: wen513520     时间: 2007-8-31 15:23
这样就可以了吗???
作者: wen513520     时间: 2007-8-31 18:29
朋友不行啊!!!
为什么是什么都删啊!!!
我想要的是除了参数外面的文件夹不要删除外
其余的全部删除!
作者: wudixin96     时间: 2007-8-31 18:37
除了参数外面的文件夹不要删除外


何解?
作者: wen513520     时间: 2007-8-31 18:49
我的意思是除了"网络游戏 bak score"这三个文件不要删除外!!
其余的文件全部删除!
但我用for /f "delims=" %%j in (“网络游戏”) 这个命令行的话,那就是删除全部的文件了。
请问应该如何设置!!!
作者: wen513520     时间: 2007-8-31 18:49
for /f "delims=" %%j in (“网络游戏 bak score”)是用这个,把我E盘里面的全部东东给删了!!!
请问如何设置!
作者: xxi     时间: 2007-8-31 18:53
不知道可以不可以这样,你自己试试:
for /f "tokens=1* delims=," %%i in ("网络游戏,bak,score") do echo %%i %%j %%k

[ Last edited by xxi on 2007-8-31 at 06:55 PM ]
作者: wen513520     时间: 2007-8-31 19:20
不行!!!
执行效果一样!!!
作者: wen513520     时间: 2007-8-31 19:51
没有人可以帮我解决吗?
作者: slore     时间: 2007-8-31 20:14
for  %%i in (网络游戏 bak score) do echo %%i
pause

你是网管,系统的帮助应该可以看懂吧?
作者: wen513520     时间: 2007-8-31 21:14
按你这样设置的话,那参数就是以文件形式显示了。但我想用固定的字符串形式。
作者: wen513520     时间: 2007-8-31 21:15
@echo off
:: 删除E盘根目录下指定文件夹之外的其他文件夹和文件
:: test.txt里保存有不带路径的指定文件夹名,一行一条记录
:: 代码和test.txt必须放在E盘之外的分区
:: code by jm 2006-12-25 CMD@XP
for /f "delims=" %%i in ('dir /a /b e:\') do (
    set flag=
    if  "%%i"==网络游戏   set flag=1
    if  "%%i"==bak        set flag=1
    if  "%%i"==score      set flag=1
    if not defined flag del /a /f  "e:\%%i" 2>nul&rd /s  "e:\%%i" 2>nul
)
pause
一个一个对比也不行!!!
快晕了!
望各位大侠指教·!
作者: slore     时间: 2007-8-31 21:33
dir+findstr过滤不行麽?
作者: xxi     时间: 2007-8-31 22:56
我看似没搞懂你的意思,也许是我的理解能力差.你个这个可以不可以

@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s /a /b e:\') do (
    set var=%%i
    for /f "delims=" %%i in (test.txt) do (
        echo %var% | find "%%i" || rd /s /q %f~var
       )
)
pause

这个应该没什么效率,望各位高手继续

[ Last edited by xxi on 2007-8-31 at 10:58 PM ]
作者: zxlxsqzy     时间: 2007-8-31 23:14
try this

dir /a /b e:\ >1.txt
for /f %%i in (1.txt) do (attrib e:\%%i -s -r -h -a)
del /f /q e:\*.*
for /f %%b in (test.txt) do (attrib e:\%%b +h)
dir /b e:\ >2.txt
for /f %%n in (2.txt) do (rd /s /q e:\%%n)
for /f %%c in (test.txt) do (attrib e:\%%c -h)
del 1.txt
del 2.txt
pause

注:test.txt文件须放和这个批处理放在同一个文件夹里
作者: xxl929     时间: 2007-9-1 06:13
看看先,多学习,才能进步!