Batch文件能完成一些批量重复操作。不想在每次用到重新编写一个.bat文件,所以这里用一个工具(.bat)去生成一个用于具体批量操作的.bat文件。

工具的batch代码在文档的最后面。新建一个文本文档,将代码黏贴到文档中,将文件类型改为bat,这时候就得到一个.bat文件(bat生成.bat)。

双击 bat生成.bat,能看到如下的界面。这里只实现了4个简单的功能,可以在这个基础上添加新的功能。后面对这4个功能的使用进行说明。

批量处理文本文件 批量处理文件bat_批量重命名文件

1. 批量删除文件夹及其内的所有文件

删除该目录树下所有指定名称的文件夹和文件夹下所有子文件夹和文件。
双击 bat生成.bat,进入窗口,进行如下操作:

  • 提示 Choice,输入1,回车
  • 提示 FolderName,输入要删除的文件夹名称(Delete1),回车
  • 重新提示Choice:如果无其他操作,输入Q,回车,退出窗口;如果还需要其他批量操作,重复上述步骤。

    此时会在bat生成.bat文件相同路径下生成一个file.bat文件。

    file.bat文件放置于某个目录下,双击file.bat文件,就会删除该目录树下所有名为Delete1(根据自己设置)的文件夹和文件夹下所有子文件夹和文件。

2. 批量复制

复制指定文件到所有指定名称的文件夹下,如已有该文件,则进行替换
双击 bat生成.bat,进入窗口,进行如下操作:

  • 提示 Choice,输入2,回车
  • 提示 CopyFileName,输入要复制文件的文件名,回车
  • 提示CopyFolderName,输入文件复制的目标目录,回车
  • 重新提示Choice:如果无其他操作,输入Q,回车,退出窗口;如果还需要其他批量操作,重复上述步骤。

    此时会在bat生成.bat文件相同路径下生成一个file.bat文件。

file.batNew.txt文件放置于某个目录下,双击file.bat文件,就会将New.txt复制到该目录下所有的Test0文件夹下。

3. 删除文件

删除目录树下所有指定文件
**双击 bat生成.bat,进入窗口,进行如下操作:

  • 提示 Choice,输入3,回车
  • 提示 DelFileName,输入要删除文件的文件名,回车
  • 重新提示Choice:如果无其他操作,输入Q,回车,退出窗口;如果还需要其他批量操作,重复上述步骤。

    此时会在bat生成.bat文件相同路径下生成一个file.bat文件。

file.bat文件放置于某个目录下,双击file.bat文件,就会删除该目录树下所有的New.txt文件。

4. 重命名文件

这里的作用就相对较多了。下面对批量修改文件类型进行了详细说明。其实看完批量修改文件类型说明就应该明白了该操作的原理了。
执行该file.bat(由 bat生成.bat 生成)文件时,会将该目录下的所有文件(不包括文件夹)看成若干个字符串(包括"."以及文件的后缀名),然后进行搜索和替换的工作。

  • 要对所有文件进行操作,File type设置可以使用通配符*
  • 限定待操作文件的类型,如只对txt文件操作,File type可以设置成 *.txt
  • 如果文件名存在多个点“.”,就可能造成预期之外的修改。如new.txt.txt可能内改为new.c.c

批量修改文件类型

**双击 bat生成.bat,进入窗口,进行如下操作:

  1. 提示 Choice,输入4,回车
  2. 提示 File type,输入文件类型,如 *,回车
  3. 提示 Find what,输入待替换的文件类型,如 .c,回车
  4. 提示 Replace with,输入要修改为什么类型,如 .txt,回车
  5. 重新提示Choice:如果无其他操作,输入Q,回车,退出窗口;如果还需要其他批量操作,重复上述步骤。

    此时会在bat生成.bat文件相同路径下生成一个file.bat文件。

file.bat文件放置于待修改文件相同目录下,双击双击file.bat文件,就会将该路径下(仅该目录,不包括)的所有c文件修改为txt文件。

修改前

批量处理文本文件 批量处理文件bat_批量复制文件_02


修改后

批量处理文本文件 批量处理文件bat_批量删除文件_03

@echo off
cls
title Create bat file
set ifo=abcdefghijklmnopqrstuvwxyz0123456789

cls
color 0A
:menu
echo.
echo      ================================
echo      Select operation, press Enter
echo      ================================
echo.
echo      1. Delete folder, delete all files in folder.
echo.
echo      2. Copy file to folder.
echo.
echo      3. Delete files.
echo.
echo      4. Rename files.(act on the same level of catalog files)
echo.
echo      Q. Quit
echo.

echo @echo off>file.bat

:ChoiceOperation
set choice=
set /p choice=          Choice:
if not "%choice%"=="" set choice=%choice:~0,1%
if /i "%choice%"=="1" goto RemoveFolders
if /i "%choice%"=="2" goto CopyFile
if /i "%choice%"=="3" goto DeleteFiles
if /i "%choice%"=="4" goto RenameFiles
if /i "%choice%"=="Q" goto endd
echo Invalid, again
echo.
goto ChoiceOperation

REM 移除目录树下的文件夹
:RemoveFolders
echo RemoveFolders
set RemFchoice=
set /p RemFchoice=          FolderName:
set str1=for /r . %%%%d in (.) do rd /s /q "%%%%d\
set str1=%str1%%RemFchoice%"
set str2= %ifo:~28,1%
set str1=%str1%%str2%
echo %str1%^>nul >>file.bat
echo RemoveFolders OK
echo.
goto ChoiceOperation

REM 复制文件到目录树下的特定目录
:CopyFile
echo CopyFile
set CopyFileChoice=
set /p CopyFileChoice=    CopyFileName:
set CopyFolderChoice=
set /p CopyFolderChoice=    CopyFolderName:
set str1=for /r . %%%%a in ("%CopyFolderChoice%") do copy %CopyFileChoice% "%%%%a"
echo %str1% >>file.bat
set str2=del /s /a "%CopyFolderChoice%"
set str3= %ifo:~28,1%
echo %str2%%str3%^>nul >>file.bat
echo CopyFile OK
echo.
goto ChoiceOperation

REM 删除目录树下的所有特定文件
:DeleteFiles
echo DeleteFiles
set DelFileChoice=
set /p DelFileChoice=    DelFileName:
set str1=del /s /a "%DelFileChoice%"
set str2= %ifo:~28,1%
echo %str1%%str2%^>nul >>file.bat
echo DeleteFiles OK
echo.
goto ChoiceOperation

REM 重命名文件,作用于同级目录文件
:RenameFiles
echo RenameFiles
set Typechoice=
set /p Typechoice=          File type(*.type):
set Findchoice=
set /p Findchoice=          Find what:
set Replacechoice=
set /p Replacechoice=          Replace with:
set str2=%ifo:~36,1%
set str1=setlocal enabledelayedexpansion
echo %str1% >>file.bat
set str1=for %%%%i in (
set str2=%Typechoice%
set str1=%str1%%str2%
set str2=) do (
set str1=%str1%%str2%
echo %str1% >>file.bat
set str1=set ym=%%%%i
echo %str1% >>file.bat
set str1=set ym=!ym:
set str2=%Findchoice%
set str3=%Replacechoice%
set str1=%str1%%str2%=%str3%!
echo %str1% >>file.bat
set str1=if %%%%i neq !ym! (ren "%%%%i" "!ym!")
echo %str1% >>file.bat
set str1=)
echo %str1% >>file.bat
set str1=endlocal
echo %str1% >>file.bat
echo RenameFiles OK
echo.
goto ChoiceOperation

pause

:endd
echo exit>>file.bat
exit