帮我编写一个在win11运行的bat脚本,需要实现从指定文件夹下复制.hex文件和.bin文件到另一个文件夹,并修改.hex文件和.bin文件的文件名为app.hex和app.bin
时间: 2024-10-16 18:08:05 浏览: 41
当然可以。以下是一个基本的批处理 (BAT) 脚本示例,用于在Windows 11环境下完成这个任务:
```batch
@echo off
setlocal enabledelayedexpansion
REM 指定源文件夹路径
set src_folder=C:\source\folder
REM 目标文件夹路径
set dst_folder=C:\destination\folder
REM 遍历源文件夹下的.hex和.bin文件
for /R %src_folder% %%f in (*.hex *.bin) do (
set file=%%f
rem 将文件名转换为新的格式并移动到目标文件夹
set new_file_name=app!file:.hex=.hex
if exist !new_file_name! (
echo File already exists, skipping !file!
) else (
copy "!file!" "%dst_folder%\!new_file_name!"
echo Copied and renamed !file! to !new_file_name!
)
)
rem 提示脚本结束
echo All .hex and .bin files processed.
相关问题
能帮我写一个bat脚本,解析出当前路径下的 app.bin 文件的大小,并且将这个大小值用四个16进制字节保存在 information.bin 文件的前4个字节里面吗,注意 app.bin和information.bin都是二进制文件而不是文本文件
可以的,以下是bat脚本的代码:
@echo off
setlocal enabledelayedexpansion
set "app=app.bin"
set "info=information.bin"
for /f %%a in ('dir /b /s "%app%"') do (
set "size=%%~za"
set /a "byte1=size & 0xff"
set /a "byte2=(size >> 8) & 0xff"
set /a "byte3=(size >> 16) & 0xff"
set /a "byte4=(size >> 24) & 0xff"
set /a "size_hex=(byte4 << 24) + (byte3 << 16) + (byte2 << 8) + byte1"
set /p "=!size_hex!" <nul >"%info%"
exit /b
)
echo "app.bin文件不存在!"
exit /b
注意,这个脚本会在当前路径下查找app.bin文件,如果找到了就会将其大小转换为四个16进制字节并保存在information.bin文件的前4个字节里面。如果app.bin文件不存在,则会输出错误信息。
echo "PA02_2303221" | dd of=./pa02_head.bin bs=1 seek=32 count=12 conv=notrunc 帮我写一个bat脚本,不使用dd程序,也能实现上面linux脚本的功能,即把字符串修改到二进制文件当中,
以下是一个可以实现相同功能的 Windows 批处理脚本:
@echo off
setlocal EnableDelayedExpansion
set "string=PA02_2303221"
set "file=./pa02_head.bin"
set "offset=32"
set "length=12"
set /a "start=%offset% - 1"
set /a "end=%offset% + %length% - 1"
set "hex="
for /l %%i in (%start%, 1, %end%) do (
set "char=!string:~%%i,%1!"
set /a "char=0x!char!"
set "hex=!hex! !char!"
)
for /f "tokens=1-3" %%a in ('certutil -f -encodehex - "%file%" ^| findstr /i /c:"[0-9a-f][0-9a-f]:"') do (
set "line=%%c"
set "line=!line:~2!"
set "line=!line: =!"
set "line=!line: =!"
set "line=!line:~0,%start!*2!!hex!!line:%end%*2%,!"
set "line=!line: =!"
set "line=!line:~0,-2!"
echo !line!>>"%file%.new"
)
move /y "%file%.new" "%file%" >nul
echo Done.
阅读全文