批处理删除空文件夹,DOS命令删除文件夹下某类型的文件

用过gothub可能码云的同桌都晓得,不包含其他公文的空文件夹上传提交时不被允许的。当然你可以在空文件下创立.keep文件(或.gitkeep文件),然后就可以上传了。

落成代码:

  • ### 批处理符号简介

del /S /F /Q *.aspx.cs
del /S /F /Q *.aspx.resx
del /S /F /Q *.ascx.cs

然而假设空文件夹相比较多,并且大家的确不要求那些空文件了,那本文就学习一种命令行删除全部空文件夹的法门。并封装成.bat批处理程序。通过鼠标右键运维即可。

复制代码 代码如下:

回显屏蔽 @

一,DOS删除命令

@echo off
for /f “tokens=*” %%a in (‘dir /b /ad /s “指标文件夹”^|sort /r’) do rd
“%%a” 2>nul
pause
goto :eof
@echo off
for /f “delims=” %%i in (‘dir /ad /b /s’) do call :rd_dir_批处理删除空文件夹,DOS命令删除文件夹下某类型的文件。empty
“%%i”
goto :eof

表示不显示@后面的命令
@用法举例:通过运行批处理文件对比pause和@pause命令即可明了@的效果。

  1.1,删除文件命令 del

假若想删除文件,输入del
盘符名:\文本名,比如,笔者想删除一个在F盘的名为123.txt的文本,则输入
 del f:\123.txt 
按回车就能去除该文件了。当然,该命令只可以删除文件,不大概去除文件夹。若要用该命令删除1个文本夹,会显得找不到文件123.txt。

rem ======= 删除空目录 =========
:rd_dir_empty
rd %1 2>nul||goto :eof
set dir_route=%1
for /f “delims=” %%i in (%dir_route%) do (
set dir_route=”%%~dpi”
for /f “delims=” %%j in (‘dir /ad /b “%%~dpi”‘)do rd “%%~dpi%%j”
2>nul||goto :eof
)
:: 把路子最后的\去掉,以便set route_deepest=”%%~dpi”能取到上一层路径
if “%dir_route:~-2,1%”==”\” set dir_route=”%dir_route:~1,-2%”
if /i not “%cd%”==%dir_route% call :rd_dir_empty %dir_route%
goto :eof

重定向1 >与>>

  1.2,删除文件夹命令 rm

比方想删除文件夹,输入rd
盘符名:\文件夹名称,比如,小编想删除二个在D盘的名为wo的文本夹,则输入
 rd d:\wo
 那样就能去除文件夹了。当然这种删除方法必须求该公文夹是空文件夹,不然删除不了。

先是步:进入Windows的MS-DOS窗口(Windows 三千/XP叫命令行提醒符),进入要查找空文件夹的驱动器,执行: 
  dir /ad/b/s | sort /r >empties.bat。 
  小提示 
  

将输出信息重定向到指定的设备或文件。系统默认输出到显示器。
\>清除文件中原有的内容后再写入
\>\>追加内容到文件末尾,而不会清除原有的内容主要将本来显示在屏幕上的内容输出到指定文件中指定文件如果不存在,则自动生成该文件
====================================================
echo hello world>c:/test.txt   生成c:/test.txt文件,内容为hello world这个格式在批处理文件里用得很多,可以生成.reg .bat .vbs 等临时文件
type c:/test.txt >prn          屏幕上不显示文件内容,转向输出到打印机
echo hello world>con           在屏幕上显示hello world,实际上所有输出都是默认 >con 的
copy c:/test.txt f: >nul       拷贝文件,并且不显示"文件复制成功"的提示信息,但如果f盘不存在,还是会显示出错信息
copy c:/test.txt f: >nul 2>nul 不显示"文件复制成功"的提示信息,并且f盘不存在的话,也不显示错误提示信息
echo ^^W ^> ^W>c:/test.txt     生成的文件内容为 ^W > W^ 和 > 是控制命令,要把它们输出到文件,必须在前面加个 ^符号
================================================

  1.3,文件夹和文书一起删除

只要想将文件夹和文书一起删除,输入rd /s /q
盘符名:\文本夹名,那样会将文件夹和它其中的文书一起删除。比如,小编想删除多个在F盘的名为wo的文本夹和它里面的名为123.txt的公文,输入:
 rd /s /q
f:\wo
 即可。

专注:删除文件在此以前备份,不要将有用文件删除!

 

复制代码 代码如下:

重定向2 <

实例一: 批量(循环)删除内定目录下全体空文件夹

上边的代码达成效益是批量删除F:\盘下的全数空文件夹:

@echo off
for /f "delims=" %%a in ('dir /ad /b /s F:\^|sort /r') do (
   rd "%%a">nul 2>nul &&echo 空目录"%%a"成功删除!
)
pause

能够复制以上代码粘贴到文本文档,然后修改文件名后缀.txt修改为.bat保存,鼠标右键点击打开即运转(可能以管理员身份运维)。我测试结果如下:

空目录"F:\aaa\bbb\ccc"成功删除!
空目录"F:\aaa\bbb"成功删除!
空目录"F:\aaa"成功删除!
空目录"F:\111"成功删除!
请按任意键继续. . .

 

 

地点命令行中“|”的输入方法是按住Shift键按“\”键。  

将输入信息来源重定向为指定的设备或文件。系统默认从显示器读取输入信息。
重定向使用举例:
=========================================
@echo off
echo abcdefg——这是文件a.txt中的信息>a.txt
echo 请任意输入字符,以回车结束:
set /p ifo=
cls
echo 【 从屏幕获得的输入信息 】
echo %ifo%
set /p ifo=<a.txt
echo 【 从文件a.txt获得的输入信息 】
echo %ifo%
pause
=========================================

实例二:批量删减多少个磁盘的空文件夹

上边的代码可以去除c  d e f 中持有的空文件夹:

@echo off
for %%i in (c d e f) do (
   if exist %%i:\ (
      for /f "delims=" %%a in ('dir /ad /b /s "%%i:\"^|sort /r') do (
         rd "%%a"
      )
   )
)
pause

瞩目,以上命令会批量刨除c d e
f盘下全体的空目录,时间大概会长一点,请耐心等待。

 

好了,有了这些批处理程序,未来做百分百项目的SVN或git地址切换的时候,提交上传再也不用纠结三个1个化解空目录的烦心啦。

 

  第叁步:命令运转后,当前目录下会转变一个Empties.bat文件,其中饱含了逆序排列的全数文件夹的清单。用Word或记事本打开该公文,把每一行内容分别放入一对英文引号之内,然后在每一行前边插入“rd ”前缀(rd后加3个空格)。 

管道符号 |

  以Word为例,按Ctrl+H打开“查找和替换”功用,查找“^p”(不含引号,下同。“^p”可以动用以下格局输入:在“查找和替换”对话框中点“高级”按钮,然后点击“特殊字符→段落标记”),替换到“^prd ”(rd前面加一个空格),然后手工校勘第3行和末段一行的始末。保存修改后的Empties.bat文件,进入命令行窗口举行那个批处理公事。Empties.bat将准备删除(即rd命令的法力)每2个文件夹,但含有内容的文件夹不容许用rd命令删除,结果就删除了全部空的文书夹。 

前一个命令的执行结果输出到后一个命令
dir *.* /s/a | find /c ".exe"管道命令表示先执行 dir 命令,对其输出的结果执行后面的 find 命令该命令行结果:
输出当前文件夹及所有子文件夹里的.exe文件的个数

  知其所以然:大家来打探一上边前Dir命令的运行规律:“/ad”须求Dir命令选出全部目录;“/b”表示只突显文件夹名称(不显得Dir命令的标题音信或摘要);“/s”表示搜索,即查找当前文件夹及其全数的子文件夹。Dir命令的出口通过管道命令(“|”)传递给Sort命令。Sort命令的作用是排序,“/r”选项表示逆序排列。 

转义符 ^

  最后,Sort命令的输出被重定向(“>”)到Empties.bat文件。由于需求Sort命令逆序排列输出结果,所以Empties.bat文件中子文件夹总是位于父文件夹的前头,由此删除文件夹时,空的子文件夹总是先被剔除,空的父文件夹也可以被剔除。可以看看,巧妙利用Windows内建命令,许多外部上看起来复杂的任务也可以轻易地成功! 

将特殊符号转化为一般符号,即剥离特殊符号的特殊地位。特殊符号指:| & > <
比如,如果我们想输出符号“>”,直接用命令 echo > 是不行的,必须修改为 echo ^> 。其余几个特殊符号类似需要有同样的处理。
转义字符使用举例:
=========================================
@echo off
echo aaaa>a.txt
echo 第一句echo执行完毕
echo aaaa^>a.txt
echo 第二句echo执行完毕
pause
=========================================
比较上面的两句echo,第一句echo将信息aaaa输出到了文件a.txt,而第二句echo则在直接屏幕上显示除aaaa>a.txt

  小提醒:Dir的五个小招数 

逻辑命令符包蕴:&、&&、||

  ★查看文件夹全部东躲山东文件:尽管想查看Windows文件夹和它全数子文件夹中全体的隐没文件,只需输入:DI奥迪Q3 C:\Windows.* /AH/S/B/P。 

-&顺序执行多条命令,而不管命令是否执行成功
    c: & cd/ & dir /w相当于把下面3行命令写到1行去了c:cd/dir /w
-&&顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令
    f: && cd/ && dir >c:/test.txt注意如果f盘不存在,那么后面2条命令将不会执行
    find "ok" c:/test.txt && echo 成功如果找到了"ok"字样,就显示"成功",找不到就不显示
-||顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令
    find "ok" c:/test.txt || echo 不成功如果找不到"ok"字样,就显示"不成功",找到了就不显示