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. 获取格式化的日期和时间)

Linux系统上用QT编写ARM9继电器控制程序的问题。 想写个QT界面程序到arm板子上,通过界面的按钮来控制继电

用C#自己动手写个操作系统,爽!

keil加入个人库

linux u盘文件自动传输到windows 指定的路径下