当前位置: 代码迷 >> CVS/SVN >> 批处理剔除 .svn 文件
  详细解决方案

批处理剔除 .svn 文件

热度:8282   发布时间:2013-02-26 00:00:00.0
批处理删除 .svn 文件
[

初尝批处理——批量删除svn标志 keyit.focus();} // -->
Shell 写了不少,批处理却一直没用过。简单的说,批处理就是一些dos命令的组合。今天小试牛刀,写了第一个批处理程序,顺便也了解了一下常用的dos命令。以前总觉得dos的东西有些过时,一直没有好好的学过,初次尝试了一下其便利性,也算多了一点知识。程序代码如下:
@echo off

:start
::启动过程,切换目录
set pwd=%cd%
cd %1
echo 工作目录是:& chdir

:input
::获取输入,根据输入进行处理
set source=:
set /p source=确定要清楚当前目录下的svn信息吗?[Y/N/Q]
set "source=%source:"=%"

if "%source%"=="y" goto clean
if "%source%"=="Y" goto clean
if "%source%"=="n" goto noclean
if "%source%"=="N" goto noclean
if "%source%"=="q" goto end
if "%source%"=="Q" goto end
goto input

:clean
::主处理过程,执行清理工作
@echo on
@for /d /r %%c in (.svn) do @if exist %%c ( rd /s /q %%c & echo     删除目录%%c)
@echo off
echo "当前目录下的svn信息已清除"
goto end

:noclean
::分支过程,取消清理工作
echo "svn信息清楚操作已取消"
goto end

:end
::退出程序
cd "%pwd%"
pause


下面简单介绍一下程序功能。该程序用于删除循环指定目录下名字为.svn的子目录,即删除svn信息。可以拷贝上述代码到wendows下文本文件中,修改后缀名为.bat即可。使用时,不带参数则当前目录为工作目录,带参数则第一个参数为工作目录(没有对参数的校验)。
第一段代码打印工作目录;第二、三段代码循环获取和解析参数,并转向对应的操作;第四段遍历删除子目录;第五段取消删除操作;第六段退出程序。
相关命令:
@ 不打印本命令
echo on|off 打开|关闭后面命令的显示
set 设置参数或环境变量
goto 跳转
pause 暂停程序,界面显示“请按任意键继续……”
程序中比较复杂的命令只有一条:
@for /d /r %%c in (.svn) do @if exist %%c ( rd /s /q %%c & echo     删除目录 %%c)
for /r 循环遍历当前目录,/d 指定遍历的是目录而不是文件,目录名为.svn;if exist 先检查目录存不存在,存在则执行删除(rd )操作,并打印删除信息。




网上好多功能强大的代码都不能用,只好抄了核心的一行
@for /d /r %%c in (.svn) do @if exist %%c ( rd /s /q %%c & echo     删除目录%%c)
pause

/code]
  相关解决方案