网站首页 » 前端开发 » 前端工具 » window name.bat 批量处理文件/文件夹
上一篇:
下一篇:

window name.bat 批量处理文件/文件夹

前言

.bat 后缀 ,双击后就可执行 .bat 里面的命令行,做成 .bat 文件批处理有时候可以大大的节省我们的宝贵时间,减少重复工作。

现在我们先来了解下 window 里的批量文件处理 *.bat 文件的基本结构:

@echo off

不显示执行过程中的命令行,如果前面不带 @ 那么就会把自己(echo off)显示出来,其它的命令行不显示。这样就可以保证命令行执行窗口的整洁

pause

暂停,也就是我们双击 .bat 文件后命令执行到 pause 时不会继续往下执行,而是提示“请按任意健继续”,只有等你按下键盘的任意一个键后才会继续往下执行命令行。

批量处理文件/文件夹

创建文件

mkdir 文件路径+文件名,mkdir,可以缩写成 md。

如果前面不加路径,那么双击 .bat 文件后就会在当前目录下创建文件夹

下面是创建一个文件夹的完整例子

@echo off
pause
mkdir "E:/yunkus"
echo "success"
pause

不过有时候我们需要创建多个文件名有规律的文件,这时我们就需要用到 for 循环

for /l %%i in (1,1,3) do (md E:\%%i)

参数 /l

如果 for 循环中带 /l 则是按照预定的规律创建文件名生成文件,(1,1,3) 中的三个参数分别表示从1开始,每次递增1,到3结束,因此上面的代码执行完之后就会生成三个文件夹,名字分别 1、2、3

如果 for 循环中不带 /l 则表示枚举括号里的变量作为将要创建的文件的文件名,此时 in 后面的括号里的值可以是数字,或者字符串,如果是字符串加不加双引号都没关系
但是现在问题来了,如果是中文又会怎么样呢?答案只有一个:乱码,文件名会乱码,并且只会生成一个,至于怎么使用中文命令,目前还没找到解决方案。

修改文件名

文件改名命令为 rename,简写:ren,用法也很简单

ren 路径+文件名 新文件名,语法为:ren path/oldName newName

ren E:\1 yunkus_1

下面是批量修改

@echo off
pause
for /l %%i in (1, 1, 3) do (md E:\%%i)
pause
for /l %%i in (1, 1, 3) do (ren E:\%%i yunkus_%%i)
echo "success"
pause

删除文件夹

删除文件的命令行代码跟创建文件夹的代码基本差不多,只需要把 mkdir 改成 rmdir 就可以。

rmdir 也有简写:rd。下面是一个新增3个文件,然后删除这三个文件的示例

@echo off
pause
for /l %%i in (1, 1, 3) do (md E:\%%i)
pause
for /l %%i in (1, 1, 3) do (rd E:\%%i)
echo "success"
pause

删除文件

删除文件跟删除文件夹的命令关键字不同,要想删除一个文件你需要会用 del 关键字,比如

@echo off
pause
del "E:\home\index.html"
echo "success"
pause

有了上面的基础之后,我们可以通过批量处理来完成日常中一些重复工作,把这些重复工作写到 .bat 文件里,需要用的时候只需要双击就可以,而无需要一行一行手动输入并执行。

文件复制

复制的命令关键字为 copy,用法也没什么好说的,跟前面的都差不多,直接来个例子

@echo off
pause
set pathSource="E:\home"
copy %pathSource%\index.html %pathSource%\index2.html
echo %DATE% %TIME% - "success" - %RANDOM%
pause

文件移动

复制的命令关键字为 move,用法同上。直接上例子

@echo off
pause
set pathSource="E:\home"
set pathTarget="E:\www"
move %pathSource%\index.html %pathTarget%\index2.html
echo %DATE% %TIME% - "success" - %RANDOM%
pause
注意:

要保证目标目录(www)存在,如果不存在文件移动会失败,你也可以通过 md E:\www 先生成目标目录后再执行文件移到命令。 如果目标目录和源目录为同一个目录,相当于给文件重命名,所以我们也可以通过这个命令来给文件生重命名。

场景应用

场景一

我们需要做一些文件映射,只了这次需要这么做外,以后很有可能也需要再次使用,只不过有可能是路径改了一下,在此场景下我们就可以使用 .bat 文件来批量处理并让这些工作在日后可以被重复执行,我们要做的只需要修改一下路径就好。

比如:我们需要映射几个文件,并且这结文件也是同一个目录下,那么我们就可以像下面这样写

@echo off
pause
set pathSource="E:\home"
set pathTarget="E:\www"
mkdir E:\www
mklink /D %pathTarget%\css %pathSource%\css
mklink /D %pathTarget%\js %pathSource%\js
mklink /D %pathTarget%\image %pathSource%\image
mklink %pathTarget%\index.html %pathSource%\index.html
echo %DATE% %TIME% - "success" - %RANDOM%
pause
注意:

1、如果要创建目录的父目录(www)不存在,我们也需要生成父目录

2、我们需要右键“以管理员身份运行”

3、set 是定义变量,这里的变量值为路径

4、%DATE% 为当前日期,%TIME% 为当前时间,为随机数 %RANDOM%,这三个变量都是 cmd 自带的

场景二

如果我们要开发一个全栈工程师,我们很多时候需要手动启用很多个服务,在这里我们也可以让这个操作命令有个家,把它们都安在 .bat 文件里,如需启用,只需双击。
比如:vue2+koa2+mongodb 开发一个前后端分离,此时我们需要开启三个服务,vue 前端服务,koa2 后端服务,mongodb 数据库服务,更让人无语的是,他们常常不在同一个目录下,你得切换目录,所以把这三行命令弄成一个 .bat 文件为你省了不少事。

毕竟是给自己用,所以我们可以不需要 pause 了,直接执行完就好,这个需要用到 start 命令行关键字来打开(执行)对应的文件。

在这时我把第一个服务启用命令行代码单独放到一个 .bat 文件里,然后通过一个 .bat 文件启用三个服务对应的 .bat 文件:

mongoService.bat
@echo off
D:
cd Program Files\mongoDB\bin\
mongo
koaService.bat
@echo off
D:
cd workspace\kblog\server
node index.js
vueService.bat
@echo off
D:
cd workspace\kblog
npm run dev

最后就可以通过一个 .bat 文件启用上面三个 .bat 文件了。

startService.bat
@echo off
start vueService.bat
start koaService.bat
start mongoService.bat
echo %DATE% %TIME% - "success" - %RANDOM%

这样就大功告成了。

注意:四个.bat 文件需要放到同一个目录中,因为上面我上的是相对路径,默认读取当前目录 下的文件,不过你也可以放到不同的目录下,你只需要修改下 startServcie.bat 中的引用路径就可以。

 

  • 微信扫一扫,赏我

  • 支付宝扫一扫,赏我

声明

原创文章,不经本站同意,不得以任何形式转载,如有不便,请多多包涵!

本文永久链接:http://yunkus.com/window-command-lines-bat-processing/

Leave a Reply

Your email address will not be published. Required fields are marked *

评论 END