您的位置:首页 > 游戏 > 手游 > Windows bat脚本学习八(文件操作)

Windows bat脚本学习八(文件操作)

2024/11/17 16:45:01 来源:https://blog.csdn.net/qq_26226375/article/details/141926896  浏览:    关键词:Windows bat脚本学习八(文件操作)

一、简介

        在使用批处理时,跟文件打交道的频率非常高,所以,这篇文章介绍一下“文件”的相关操作

二、文件存在检查

        exist 文件名

@echo off
chcp 65001
setlocal enabledelayedexpansion:: 设置文件的路径
set "file=test1.hex":: 检查文件是否存在
if not exist "%file%" (echo !file!文件不存在.pause
)pauseendlocal

         结果:

三、打印路径

        既然要操作文件,那对文件的路径和文件名的操作,就是第一步。

@echo off
chcp 65001
setlocal enabledelayedexpansion:: 设置文件的路径
set "file=test.hex":: 检查文件是否存在
if not exist "%file%" (echo !file!文件不存在.pause
):: 绝对地址
set absolute_path=%~dp0!file!
echo 绝对地址:!absolute_path!:: 文件名
echo 文件名:!file!:: 其他文件打印
for %%f in (!file!) do (echo 文件名:%%fecho 绝对地址:%%~dpfecho 文件名称,无后缀:%%~nfecho 文件后缀:%%~xfecho 完整文件名:%%~nxfecho 无后缀路径:%%~dpnf
)
pauseendlocal

         结果:

四、打印文件内容

        type 文件名

        见如下代码:

@echo off
chcp 65001
setlocal enabledelayedexpansion:: 设置文件的路径
set "file=test.hex":: 检查文件是否存在
if not exist "%file%" (echo !file!文件不存在.pause
):: 打印文件内容
type !file!
pauseendlocal

        见结果:

        在打开源文件看一下:

        内容相同。

五、复制文件

        copy 原文件 结果文件

@echo off
chcp 65001
setlocal enabledelayedexpansion:: 设置文件的路径
set "file=test.hex":: 检查文件是否存在
if not exist "%file%" (echo !file!文件不存在.pause
):: 获取文件名,无后缀
for %%f in (!file!) do (set file_name=%%~nf
):: 复制文件,并修改文件类型为txt
copy !file! !file_name!.txtpauseendlocal

        结果:

        并且在文件夹下,多了一个test.txt文件。

        对比一下test.txt和test.hex文件。

        完全一样。

六、逐行获取文件内容

        for /f 

@echo off
chcp 65001
setlocal enabledelayedexpansion:: 设置文件的路径
set "file=test.hex":: 检查文件是否存在
if not exist "%file%" (echo !file!文件不存在.pause
):: 逐行获取文件内容
set /a row=0
for /f %%f in (!file!) do (set /a row+=1echo 行:!row!,内容:%%f
)pauseendlocal

        结果如下:

        看一下源文件内容:

        内容相同

七、文件重命名

        ren 文件名 重命名文件名

@echo off
chcp 65001
setlocal enabledelayedexpansion:: 设置文件的路径
set "file=test.hex":: 检查文件是否存在
if not exist "%file%" (echo !file!文件不存在.pause
)::重命名文件
ren !file! renamed.hexpauseendlocal

        结果
 

        原来的test.hex文件已经被改成renamed.hex文件了。

八、删除文件

        del 文件名

        在当前文件夹里,有如下文件

        调用如下函数:

@echo off
chcp 65001
setlocal enabledelayedexpansion:: 设置文件的路径
set "file=%~dp0test2.hex":: 检查文件是否存在
if not exist "%file%" (echo !file!文件不存在.pause
)::删除文件
del !file!pauseendlocal

        结果:

 

        没有报错,并且原来文件夹里的test2.hex已经没有了。

九、移动文件

         move 路径/文件 路径/文件

        如果移动的文件是当前文件夹的某一个文件,那么move将直接修改该文件。

@echo off
chcp 65001
setlocal enabledelayedexpansion:: 设置文件的路径
set "file=%~dp0test.hex":: 检查文件是否存在
if not exist "%file%" (echo !file!文件不存在.pause
)::移动文件
move !file! mov.txtpauseendlocal

        运行前,文件夹内的文件如下:

 

        运行后

        原来test.hex文件直接被修改为mov.txt。

        如果移动的是其他文件,则直接将该文件移动。(原目录下的文件将消失。)

        例如,我们在当前文件夹下,再创建一个file的文件夹,并在该文件夹下创建一个test.txt文件。

        调用如下代码:

@echo off
chcp 65001
setlocal enabledelayedexpansion:: 设置文件的路径
set "file=%~dp0\file\test.txt":: 检查文件是否存在
if not exist "%file%" (echo !file!文件不存在.pause
)::移动文件
move !file! %~dp0mov.txtpauseendlocal

        结果:

 

        可以看到,原文件夹下的test.txt文件已经没有了,而在当前目录下,多了一个mov.txt文件。

十、提取部分内容并输出到文件

        这里有字符串相关的操作,不清楚的,参考如下文章:

Windows bat脚本学习四(字符串操作)_bat脚本 字符拼接空格-CSDN博客

        见如下代码:

@echo off
chcp 65001
setlocal enabledelayedexpansion:: 设置文件的路径
set "file=%~dp0test.hex":: 检查文件是否存在
if not exist "%file%" (echo !file!文件不存在.pause
)::获取每行:后的数据
for /f "delims=:" %%a in (!file!) do (	set str=%%a:: 截取前5个字节set target_str=!str:~0,5!:: 输出内容到文件下,如果没有文件,则创建echo !target_str! >> target.txt
)pauseendlocal

         运行后,在文件夹下多了一个target.txt文件。

        输出的内容与hex的前5个字符相同。

        

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com