Windows批处理 - 给自己写个库(1. 路径处理)

来源:互联网 发布:mysql创建索引 编辑:程序博客网 时间:2024/04/29 15:34

在使用了高级语言之后,批处理这种命令行的代码总会让人感到很笨重:经常要写很多重复的代码,很多事情需要通过好几层的 if else 控制来实现,甚至有很多功能没法实现。

这里需要说清楚的是:Windows的批处理(Batch)在名称上就已经给自己定好位了,它不用像高级编程语言那样强大,只需要能够 通过命令集合优化你重复的操作

而上面说到 经常要写很多重复的代码 和这里的 优化重复的操作 就有了冲突。在高级语言中,结构体,封装,面向对象等能够让代码重用性大大提高,而我们的批处理就显得很“一次性”了。但是如果你设计的足够好,保证变量不重名,将常用代码分成多个文件模块,然后使用Call命令传参数去调用,你仍然能保证你的代码不会变成“一次性”。

例如: FilePath.bat

::drive letter:    set DriveLetter=%~d1::directory path without drive letter    set DirectoryPathWithoutDriveLetter=%~p1::directory path    set DirectoryPath=%~d1%~p1::file name without extension    set FileNameWithoutExtension=%~n1::file extension    set FileExtension=%~x1::file name with extension    set FileName=%~n1%~x1::absolute path    set AbsolutePath=%~f1::file size (bytes)    set FileSize=%~z1

这个程序会对传入的文件路径进行处理,并把常用结果存入固定名称的变量。如果你在程序里需要用,只需要Call这个程序,然后取相应的值即可。

例如:test.bat

@echo offCall ".\XZLib\FilePath.bat" ".\test.bat"echo %DriveLetter%echo %DirectoryPathWithoutDriveLetter%echo %DirectoryPath%echo %FileNameWithoutExtension%echo %FileExtension%echo %FileName%echo %AbsolutePath%echo %FileSize%pause

这里我将“FilePath.bat”这个程序放入“XZLib”文件夹下,然后Call该程序并传入测试程序“test.bat”自身的路径。下面变量输出依次是:
* 磁盘驱动器号
* 不带驱动器号的文件所在目录
* 带驱动器号的文件所在目录
* 不带扩展名的文件名称
* 文件的扩展名
* 带扩展名的文件名称
* 文件的绝对路径
* 文件的大小(字节)

在“test.bat”这个程序里,我通过直接调用程序传入参数来获取数据,有没有一点像高级语言中的方法调用呢。

在自己的库里加入这个程序之后,以后只要你需要对文件路径进行处理,就直接Call该程序,然后使用变量即可,也就达到了我们代码重用的需求。

在之后,我会继续更新常用的“库”代码,这将会让之后的程序写起来越来越 简单 ,越来越 优雅

0 0
原创粉丝点击