文件分离器(Windows系统环境下运行)

最近在家闲来无事,就学了批处理命令。总的来说批处理命令据听说虽然用的很少,但是在写代码上还是很有帮助的。一些编程语言(如C语言,python等)可以调用批处理命令来实现更多功能。废话不多说,开始今天的正题:文件分离器。

        文件分离器的使用背景是这样的:有一天,我想要重新装系统。众所周知,重装系统需要备份文件的。但是电脑里的文件夹太多了,文件分布在这些文件夹里太乱太杂以至于我还要把文件夹一个个地打开看看有没有需要复制粘贴到U盘的文件(图片和文档居多)。以下就是我以前重装系统前的备份工作。

        因此我寻思着要是有个能分离提取各种各样的文件并把提取到的文件拷贝到U盘里的脚本代码。于是我花了一上午的时间终于设计出来了 。代码如下:

@echo off
rem ---------------------------主体-------------------------------
:start
echo [a:mp3][b:mp4][c:doc][d:docx][e:xlsx][f:xls][g:txt]
echo [h:bmp][i:dwg][j:jpg][k:wmv][l:zip][m:rar][n:jpeg]
echo [o:png][p:pdf][q:ppt][r:pptx][s:java][t:xlog][u:html]
choice /c abcdefghijklmnopqrstu /n /m 请选择对应的操作:
if %errorlevel% == 21 goto html
if %errorlevel% == 20 goto xlog
if %errorlevel% == 19 goto java
if %errorlevel% == 18 goto pptx
if %errorlevel% == 17 goto ppt
if %errorlevel% == 16 goto pdf
if %errorlevel% == 15 goto png
if %errorlevel% == 14 goto jpeg
if %errorlevel% == 13 goto rar
if %errorlevel% == 12 goto zip
if %errorlevel% == 11 goto wmv
if %errorlevel% == 10 goto jpg
if %errorlevel% == 9 goto dwg
if %errorlevel% == 8 goto bmp
if %errorlevel% == 7 goto txt
if %errorlevel% == 6 goto xls
if %errorlevel% == 5 goto xlsx
if %errorlevel% == 4 goto docx
if %errorlevel% == 3 goto doc
if %errorlevel% == 2 goto mp4
if %errorlevel% == 1 goto mp3
pause
rem -----------------------------html代码段------------------------
:html
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\html
for /R %source% %%v in (*.html) do copy %%v C:\seperate\html\*.html
start C:\seperate\html
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\html\*.html
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------xlog代码段------------------------
:xlog
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\xlog
for /R %source% %%v in (*.xlog) do copy %%v C:\seperate\xlog\*.xlog
start C:\seperate\xlog
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\xlog\*.xlog
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------java代码段------------------------
:java
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\java
for /R %source% %%v in (*.java) do copy %%v C:\seperate\java\*.java
start C:\seperate\java
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\java\*.java
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------pptx代码段------------------------
:pptx
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\pptx
for /R %source% %%v in (*.pptx) do copy %%v C:\seperate\pptx\*.pptx
start C:\seperate\pptx
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\pptx\*.pptx
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------ppt代码段------------------------
:ppt
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\ppt
for /R %source% %%v in (*.ppt) do copy %%v C:\seperate\ppt\*.ppt
start C:\seperate\ppt
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\ppt\*.ppt
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------pdf代码段------------------------
:pdf
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\pdf
for /R %source% %%v in (*.pdf) do copy %%v C:\seperate\pdf\*.pdf
start C:\seperate\pdf
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\pdf\*.pdf
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------png代码段------------------------
:png
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\png
for /R %source% %%v in (*.png) do copy %%v C:\seperate\png\*.png
start C:\seperate\png
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\png\*.png
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------jpeg代码段------------------------
:jpeg
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\jpeg
for /R %source% %%v in (*.jpeg) do copy %%v C:\seperate\jpeg\*.jpeg
start C:\seperate\jpeg
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\jpeg\*.jpeg
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------rar代码段------------------------
:rar
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\rar
for /R %source% %%v in (*.rar) do copy %%v C:\seperate\rar\*.rar
start C:\seperate\rar
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\rar\*.rar
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------zip代码段------------------------
:zip
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\zip
for /R %source% %%v in (*.zip) do copy %%v C:\seperate\zip\*.zip
start C:\seperate\zip
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\zip\*.zip
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------wmv代码段------------------------
:wmv
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\wmv
for /R %source% %%v in (*.wmv) do copy %%v C:\seperate\wmv\*.wmv
start C:\seperate\wmv
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\wmv\*.wmv
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------jpg代码段------------------------
:jpg
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\jpg
for /R %source% %%v in (*.jpg) do copy %%v C:\seperate\jpg\*.jpg
start C:\seperate\jpg
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\jpg\*.jpg
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------dwg代码段------------------------
:dwg
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\dwg
for /R %source% %%v in (*.dwg) do copy %%v C:\seperate\dwg\*.dwg
start C:\seperate\dwg
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\dwg\*.dwg
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------bmp代码段------------------------
:bmp
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\bmp
for /R %source% %%v in (*.bmp) do copy %%v C:\seperate\bmp\*.bmp
start C:\seperate\bmp
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\bmp\*.bmp
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------txt代码段------------------------
:txt
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\txt
for /R %source% %%v in (*.txt) do copy %%v C:\seperate\txt\*.txt
start C:\seperate\txt
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\txt\*.txt
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------xls代码段------------------------
:xls
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\xls
for /R %source% %%v in (*.xls) do copy %%v C:\seperate\xls\*.xls
start C:\seperate\xls
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\xls\*.xls
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------mp3代码段------------------------
:mp3
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\mp3
for /R %source% %%v in (*.mp3) do copy %%v C:\seperate\mp3\*.mp3
start C:\seperate\mp3
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\mp3\*.mp3
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------mp4代码段------------------------
:mp4
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\mp4
for /R %source% %%v in (*.mp4) do copy %%v C:\seperate\mp4\*.mp4
start C:\seperate\mp4
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\mp4\*.mp4
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------doc代码段------------------------
:doc
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\doc
for /R %source% %%v in (*.doc) do copy %%v C:\seperate\doc\*.doc
start C:\seperate\doc
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\doc\*.doc
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------docx代码段------------------------
:docx
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\docx
for /R %source% %%v in (*.docx) do copy %%v C:\seperate\docx\*.docx
start C:\seperate\docx
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\docx\*.docx
if %errorlevel% == 1 echo done
pause
goto start
rem -----------------------------xlsx代码段------------------------
:xlsx
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\xlsx
for /R %source% %%v in (*.xlsx) do copy %%v C:\seperate\xlsx\*.xlsx
start C:\seperate\xlsx
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\xlsx\*.xlsx
if %errorlevel% == 1 echo done
pause
goto start

看似代码长又乱,但正所谓事物的发展规律是由简单到复杂的。接下来我讲一下代码运行的原理。大家在看的时候一定要有耐心哟!

        首先讲主体部分,主体用来选择选项所对应的操作。echo表示在命令窗口中输出信息。举例如下:

echo hello world

        该程序运行的结果为:

hello world

         因此用echo来提示用户可以进行的操作。于是就有了主体中的提示代码如下:

echo [a:mp3][b:mp4][c:doc][d:docx][e:xlsx][f:xls][g:txt]
echo [h:bmp][i:dwg][j:jpg][k:wmv][l:zip][m:rar][n:jpeg]
echo [o:png][p:pdf][q:ppt][r:pptx][s:java][t:xlog][u:html]

        有了提示信息了还要有相对应的操作,例如字母a表示提取MP3文件,字母b表示提取MP4文件等等。所以代码要用到choice语句,与if语句配套使用来区分提取文件的类型。对此我选择使用errorlevel来区分操作。

        errorlevel怎么用呢?不急,观察下面代码你就知道怎么用了?

choice /c 123456 /n /m 请选择对应的操作:
if %errorlevel% == 6 goto 6
if %errorlevel% == 5 goto 5
if %errorlevel% == 4 goto 4
if %errorlevel% == 3 goto 3
if %errorlevel% == 2 goto 2
if %errorlevel% == 1 goto 1
:1
echo 1
pause %pause表示暂停运行程序%
:2
echo 2
pause
:3
echo 3
pause
:4
echo 4
pause
:5
echo 5
pause
:6
echo 6
pause

        假如输入1,则choice语句返回的%errorlevel%值为1,假如输入2,则choice语句返回的%errorlevel%值为2,以此类推。可得出choice的参数从左到右依次为1,2,3,4,5,6,7,8,9......而且不管参数为字母还是为数字其参数所对应的%errorlevel%都有效。所以本文章主体代码的choice语句与if语句配套使用的问题解决了,代码如下:

choice /c abcdefghijklmnopqrstu /n /m 请选择对应的操作:
if %errorlevel% == 21 goto html
if %errorlevel% == 20 goto xlog
if %errorlevel% == 19 goto java
if %errorlevel% == 18 goto pptx
if %errorlevel% == 17 goto ppt
if %errorlevel% == 16 goto pdf
if %errorlevel% == 15 goto png
if %errorlevel% == 14 goto jpeg
if %errorlevel% == 13 goto rar
if %errorlevel% == 12 goto zip
if %errorlevel% == 11 goto wmv
if %errorlevel% == 10 goto jpg
if %errorlevel% == 9 goto dwg
if %errorlevel% == 8 goto bmp
if %errorlevel% == 7 goto txt
if %errorlevel% == 6 goto xls
if %errorlevel% == 5 goto xlsx
if %errorlevel% == 4 goto docx
if %errorlevel% == 3 goto doc
if %errorlevel% == 2 goto mp4
if %errorlevel% == 1 goto mp3

        讲完了主体再讲一下其它代码段,代码段多但其工作的原理一样。对此我只举提取MP3文件的代码段如下:

:mp3
set /p source = 请输入文件路径名(可以将文件夹拖拽至该命令窗口):
mkdir C:\seperate\mp3
for /R %source% %%v in (*.mp3) do copy %%v C:\seperate\mp3\*.mp3
start C:\seperate\mp3
choice /c yn /n /m 是否保留已复制的文件(y/n):
if %errorlevel% == 2 del C:\seperate\mp3\*.mp3
if %errorlevel% == 1 echo done
pause
goto start

        假设用户输入的选项为a,也就是分离MP3文件,if语句中的goto跳转到MP3代码段(如上)。

设置一个用户输入的变量source,也就是要被做分离文件操作所对应的文件路径。文件路径的形式如下:

C:\Users\12952\Desktop\seperate

        接着在C盘里利用mkdir函数创建路径C:\seperate\mp3,然后利用for语句设置参数为/R表示参数为文件路径,设置for循环所对应的变量%%v,用变量%%v遍历用户输入的%source%变量值所对应的文件路径。in里面包含文件遍历条件,用通配符‘*’表示文件名称。'*mp3'表示遍历的文件对象为MP3文件。如果文件类型为MP3,则执行do后面的copy语句,copy语句的用法如下:

copy [原文件所对应的文件路径] [要拷贝到的文件路径]

        利用start函数查看分离文件后的结果。在此设置choice函数来选择是否保留已分离后的文件。当用户输入y时命令窗口会提示done表示已完成操作。当用户输入为n时利用del函数删除所有已分离文件中后缀名为MP3的文件。最后利用goto语句跳转代码至主体代码。

        至于其它的代码段和MP3代码段相似(就是把MP3改为其它文件后缀名即可)。至此此代码的讲解已结束。初次制作,可能有一些小小的问题,还谅包涵。最后,感谢大家的耐心观看。

  • 29
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在asp版《在线文件管理器》的基础上设计制作,取其精华,弃其糟粕,功能更强,效率更高, 具有以下特点: 1。采用三层结构开发,程序逻辑和用户界面彻底分离,可轻松换肤。 2。全部代码采用Ultra Edit编写,不使用任何可视化开发工具,精确控制代码流程,确保代码高效率运行。 3。自行开发自定义控件,不产生任何一丁点的HTML代码冗余。 4。尽可能的减少客户与服务器的交互,降低对服务器资源消耗,减少网络传输。 5。真正多用户系统,可分别为每个用户设置可管理的文件类型,目录等,上传的单个文件大小限制等 6。各用户环境自由配置,风格自选(如果有多个风格的话),可自由设置每页显示的文件及目录数等 7。文件与目录翻页分开,即使管理同一目录下的数万个文件也不再出现程序超时现象。 8。功能强大,除了asp版具备的全部功能如上传、下载、编辑、批量复制、移动、粘贴外还具备文件快速过滤搜索,智能修改文件属性。 9。效率极高。经测试,在一太普通PC上对一个包含50000个文件的目录进行浏览管理,任意翻页,执行时间均不超过1秒。过滤或者搜索则更是低至仅0.3秒的执行时间。而windows资源管理器打开目录或者asp版翻至最后一页都需要6.5秒甚至更长时间 v1.7更新: 调整内部命名空间。 调整自定义控件的实现逻辑。 增加运行异常缓存记录及显示,方便问题反馈及版本升级。 优化部分内部字符串处理算法 默认帐号:admin 默认密码:spbdev

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值