@ECHO OFF
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('DIR/b ') do (
echo %%i | findstr /c:".mp4">nul
if !errorlevel! == 0 (
set tmp_str=%%i
set video_str=!tmp_str:.mp4=_aes!
openssl aes-128-cbc -e -in %%i -out !video_str! -nosalt -iv 61646d696e31323561646d696e313235 -K 61646d696e31323561646d696e313235
echo [!tmp_str!] --^> [!video_str!] , encrypt_ok
)
)
@ECHO OFF ::关闭回显
:: 开启变量延迟, 批处理读取命令时是按行读取的(另外例如for/if命令等,其后用一对圆括号闭合的所有语句也当作一行);
:: 简单来说,在读取了一条完整的语句之后,不立即对该行的变量赋值,而会在某个单条语句执行之前再进行赋值,也就是说“延迟”了对变量的赋值。
:: 开启变量延迟后,使用 !var! 取变量的值
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('DIR/b ') do ( :: DIR/b 与 dir 区别见下面的图片
echo %%i | findstr /c:".mp4">nul :: /c:".mp4",会准确识别“.mp4”,具体区别见下面图片; >nul 表示屏蔽此条命令的输出;重定向到 nul
if !errorlevel! == 0 ( :: errorlevel 在上条命令执行为 true 时,值为0,否则为其他值
set tmp_str=%%i :: 初始化一个变量 tmp_str
set video_str=!tmp_str:.mp4=_aes! :: 替换 tmp_str 中的 .mp4 字符为 _aes ,并赋值给新变量 video_str
:: 批量操作命令,可以有很多行,此处是对 mp4 文件进行批量 aes 加密
openssl aes-128-cbc -e -in %%i -out !video_str! -nosalt -iv 61646d696e31323561646d696e313235 -K 61646d696e31323561646d696e313235
:: 输出结果/提示信息等,^ 为转义字符,^> 这样可以输出 “>” ,否则就会是重定向操作
echo [!tmp_str!] --^> [!video_str!] , encrypt_ok
)
)
dir
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d7d1330aef8d5d307cf8dbc7a4033650.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/21e9e66c3f0f055195ad25850b2d904e.png)
findstr
- findstr /c:".mp4" 与 findstr “.mp4”
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f9d3457a499f5799c64dadebf2bb15be.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3daec4dd88db04661ac0f27523c230a4.png)
demo
@ECHO OFF
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('DIR/b ') do (
echo %%i | findstr "_aes">nul
if !errorlevel! == 0 (
set tmp_str=%%i
set video_str=!tmp_str:_aes=.mp4!
openssl aes-128-cbc -d -in %%i -out !video_str! -nosalt -iv 61646d696e31323561646d696e313235 -K 61646d696e31323561646d696e313235
echo [!tmp_str!] --^> [!video_str!] , decrypt_ok
)
)