小弟我是一名网吧的网管,批处理方面不算很熟,望各位大侠鼎力相助!
@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”)
何解?作者: 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