快捷搜索:  汽车  科技

bat批处理提取所有文件:批处理某一路径及其各级子目录下某一类型的全部文件

bat批处理提取所有文件:批处理某一路径及其各级子目录下某一类型的全部文件@echo off & cd /d F:\website &for /r %d in (*.dwg) do (echo %d)效果:如果不想显示命名本身,可以再串一个echo off命名:cd /d F:\website for /r %d in (*.dwg) do (echo %d)用cd命名切换到F:\website目录,然后使用for /r循环处理以F:\website指定为起点的的整个目录树下的扩展名为dwg的文件(包括子目录中的文件);两个dos命令可以用符号&连接到一起,一起执行:cd /d F:\website &for /r %d in (*.dwg) do (echo %d)效果:

如有以下任务:

将F:\Website路径及其各级子目录下的dwg文件全部拷贝到F:\dwg

在拷贝前我们先查看一下该类文件的数量及全部大小。

使用两个dos命名命令:

cd /d F:\website for /r %d in (*.dwg) do (echo %d)

用cd命名切换到F:\website目录,然后使用for /r循环处理以F:\website指定为起点的的整个目录树下的扩展名为dwg的文件(包括子目录中的文件);

两个dos命令可以用符号&连接到一起,一起执行:

cd /d F:\website &for /r %d in (*.dwg) do (echo %d)

效果:

bat批处理提取所有文件:批处理某一路径及其各级子目录下某一类型的全部文件(1)

如果不想显示命名本身,可以再串一个echo off命名:

@echo off & cd /d F:\website &for /r %d in (*.dwg) do (echo %d)

效果:

bat批处理提取所有文件:批处理某一路径及其各级子目录下某一类型的全部文件(2)

也可以将以上输出重定向到一个文本文件(输出到文件):

cd /d F:\website & for /r %d in (*.dwg) do (echo %d >> c:\dwg.txt)

注意在dos的for循环中对变量的引用只使用一个百分号%,而在bat中需要使用两个百分号%%。

完整的bat文件,包括屏幕显示及输出到virus.txt文件:

@echo off setlocal enabledelayedexpansion echo. >c:\virus.txt color 3a echo. set /a n = 0 set /p b=输入查找文件扩展名: if /i "%b%"=="" cls && goto fh echo 系统正在查找文件,请耐心等候...... echo. ::for %%a in (F E D C) do ( ::for %%a in (F) do ( cd /d F:\website for /r %%b in (*.%b%) do ( if exist "%%b" ( echo %%b echo %%b>>c:\virus.txt set /a n =1 echo 现查到%b%文件个数:!n! ) ) ::) type c:\virus.txt | find /i "\" && goto no echo. echo 文件内容没找到! del c:\virus.txt>nul 2>nul echo. pause exit :no ::cls echo. echo 文件查找完毕并记录在c:\virus.txt中 ! echo 现查到%b%文件总的个数:!n! echo. echo 是否打开文本查看记录 ? echo. echo 选择" Y "查看。 选择" N "退出。 echo. set /p Choice=Y/N: IF /I '%Choice:~0 1%'=='y' goto A IF /I '%Choice:~0 1%'=='n' goto B pause exit :A start c:\virus.txt exit pause :b exit

效果:

bat批处理提取所有文件:批处理某一路径及其各级子目录下某一类型的全部文件(3)

如果要复制到某一路径下,只需要更改上面的一行代码即可:

echo %%b

更改为:

copy %%b F:\dwg

如果路径是某个分区,可以将

cd /d F:\website

更改为:

cd /d F:\

如果路径是多个分区,可以添加一个外层循环:

for %%a in (F E D C) do ( cd /d %%a:\ ::…… )

表示在F、E、D、C四个分区下查看或复制。

以下是查看F盘下的全部dwg文件(有880个):

bat批处理提取所有文件:批处理某一路径及其各级子目录下某一类型的全部文件(4)

并转存到了一个文本文件,如下所示:

bat批处理提取所有文件:批处理某一路径及其各级子目录下某一类型的全部文件(5)

现在的思路是,以上述文件文本内容作为需要拷贝的文件清单,将不需要拷贝的文件(文本行)删除掉,然后按照文件清单去拷贝文件(清理后还剩下23个文件需要拷贝):

bat批处理提取所有文件:批处理某一路径及其各级子目录下某一类型的全部文件(6)

使用批处理命名for /f即可分行分列解析文件文本。

完整的代码如下:

::如果目标文件中已存在某文件,则相同文件名 扩展名的文件不会被复制 @echo off setlocal enabledelayedexpansion color 3a echo. set /a n = 0 echo 系统正在查找文件,请耐心等候...... echo. for /f "delims=" %%b in (c:\dwg.txt) do ( ::路径有空格时,需要使用参数"delims=" if exist "%%b" ( copy "%%b" C:\dwg set /a n =1 echo 现复制了个文件:!n! ) ) echo. echo. pause

-End-

猜您喜欢: