文件分割器怎么用

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

 

 

 

 

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

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

c672770000b64170804d26e63c62fe23.gif

        因此我寻思着要是有个能分离提取各种各样的文件并把提取到的文件拷贝到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改为其它文件后缀名即可)。至此此代码的讲解已结束。初次制作,可能有一些小小的问题,还谅包涵。最后,感谢大家的耐心观看。

 

 

 

 

 

知秋君
上一篇 2024-08-17 12:48
下一篇 2024-08-17 12:12

相关推荐