您当前位置: 首页 »

BAT

标签归档: BAT

清理冗余文件的批处理脚本

 在一个网站项目在本地做好经过测试准备上传到服务器时经常需要删除一些模版缓存文件和DW生成的_notes文件夹等,于是写了如下脚本进行批量处理,tpl_c为Smarty模版缓存目录,保存为clear.bat即可

@echo off
echo 正在清理 Smarty 缓存,请稍候...
for /D /R %%F in (tpl_c) do if exist %%F del /f /s /q %%F\*.*
echo Smarty 缓存清理完毕!
echo.
echo 正在清理 Dreamweaver 设计备注,请稍候...
for /D /R %%F in (_notes) do if exist %%F rmdir /s /q %%F
echo Dreamweaver 设计备注清理完毕!
echo.
echo 正在清理 Windows 图片缩略图缓存,请稍候...
rem 缩略图缓存一般具有隐藏和系统属性,先去除这些属性后再删除
for /R %%F in (Thumbs.db) do if exist %%F attrib -S -H %%F && del /f /q %%F
echo Windows 图片缩略图缓存清理完毕!

清除 tpl_c 目录下的所有文件,删除整个 _notes 目录以及删除所有 Windows 自动生成的图片缩略图缓存,请根据需要进行修改。

The damn “for” in batch file!

本来想在单个批处理文件里面实现类似下面的操作:

@echo off
SET num=0
FOR /D %%i IN (*) DO (
SET /a num=%num%+1
echo %num%.%%i
)
echo %num%
pause>nul

结果发现这个该死FOR里面居然不能改变%num%的值,查了下 FOR /? 说是要用CMD /v启动命令行,然后把%num%改成!num!,我本来的目的是直接双击这一个批处理就完成操作的,看来不能用批处理实现了,去除这个部分,结果就有些不完美了,转向研究VBS中,看看VBS脚本能不能比较完美地实现我想要完成的功能,没找到好点的脚本对象手册,MSDN网上查又太慢,比较郁闷的

Update(2010-06-01): 原来通过设置延迟环境变量扩展,把%num%改为!num!后可实现:

@echo off & setlocal enabledelayedexpansion
SET num=0
FOR /D %%i IN (*) DO (
SET /a num=!num!+1
echo !num!.%%i
)
echo %num%
pause>nul

参见:

  1. http://www.java3z.com/cwbwebhome/article/article9/973.html