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

一、简介

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

二、文件存在检查

        exist 文件名

@echo off
chcp 65001
setlocal enabledelayedexpansion

:: 设置文件的路径
set "file=test1.hex"

:: 检查文件是否存在
if not exist "%file%" (
    echo !file!文件不存在.
    pause
)

pause

endlocal

         结果:

三、打印路径

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

@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 文件名:%%f
	echo 绝对地址:%%~dpf
	echo 文件名称,无后缀:%%~nf
	echo 文件后缀:%%~xf
	echo 完整文件名:%%~nxf
	echo 无后缀路径:%%~dpnf
)
pause

endlocal

         结果:

四、打印文件内容

        type 文件名

        见如下代码:

@echo off
chcp 65001
setlocal enabledelayedexpansion

:: 设置文件的路径
set "file=test.hex"

:: 检查文件是否存在
if not exist "%file%" (
    echo !file!文件不存在.
    pause
)

:: 打印文件内容
type !file!
pause

endlocal

        见结果:

        在打开源文件看一下:

        内容相同。

五、复制文件

        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!.txt

pause

endlocal

        结果:

        并且在文件夹下,多了一个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+=1
	echo 行:!row!,内容:%%f
)

pause

endlocal

        结果如下:

        看一下源文件内容:

        内容相同

七、文件重命名

        ren 文件名 重命名文件名

@echo off
chcp 65001
setlocal enabledelayedexpansion

:: 设置文件的路径
set "file=test.hex"

:: 检查文件是否存在
if not exist "%file%" (
    echo !file!文件不存在.
    pause
)

::重命名文件
ren !file! renamed.hex

pause

endlocal

        结果
 

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

八、删除文件

        del 文件名

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

        调用如下函数:

@echo off
chcp 65001
setlocal enabledelayedexpansion

:: 设置文件的路径
set "file=%~dp0test2.hex"

:: 检查文件是否存在
if not exist "%file%" (
    echo !file!文件不存在.
    pause
)

::删除文件
del !file!

pause

endlocal

        结果:

 

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

九、移动文件

         move 路径/文件 路径/文件

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

@echo off
chcp 65001
setlocal enabledelayedexpansion

:: 设置文件的路径
set "file=%~dp0test.hex"

:: 检查文件是否存在
if not exist "%file%" (
    echo !file!文件不存在.
    pause
)

::移动文件
move !file! mov.txt

pause

endlocal

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

 

        运行后

        原来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.txt

pause

endlocal

        结果:

 

        可以看到,原文件夹下的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
)

pause

endlocal

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

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

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值