Windows批处理 - 给自己写个库(1. 路径处理)
Posted EZhex1991
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows批处理 - 给自己写个库(1. 路径处理)相关的知识,希望对你有一定的参考价值。
在使用了高级语言之后,批处理这种命令行的代码总会让人感到很笨重:经常要写很多重复的代码,很多事情需要通过好几层的 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 off
Call ".\\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该程序,然后使用变量即可,也就达到了我们代码重用的需求。
在之后,我会继续更新常用的“库”代码,这将会让之后的程序写起来越来越 简单 ,越来越 优雅 。
以上是关于Windows批处理 - 给自己写个库(1. 路径处理)的主要内容,如果未能解决你的问题,请参考以下文章
Windows批处理 - 给自己写个库(3. INI文件的读取)
Windows批处理 - 给自己写个库(2. 获取格式化的日期和时间)