标题: [文件操作] 【已解决】批处理如何给图片随机循环添加水印? [打印本页]
作者: qq629926132 时间: 2023-10-30 16:31 标题: 【已解决】批处理如何给图片随机循环添加水印?
本帖最后由 qq629926132 于 2023-10-31 09:14 编辑
现在有这样一个需求
1、D盘A文件夹下有一批待处理图片需要添加水印
2、A文件夹下存在子文件夹watermark 里面有十几个水印图片
求:如何批量从watermark水印文件夹里面随机选中水印图片,批量给A文件夹下的图片添加水印呢?
比如 水印1 +图片1 水印10+图片2 水印3+图片3 类似这种
我目前尝试使用如下代码,发现随机数没办法循环随机,只随机一次,结果导致加的水印是一样的- Setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /a-d /b /s "D:\A\watermark\*.png"') do (SET /A h+=1 & SET r!h!=%%i )
- set /a s=!random!%%!h!+1
- for /f "delims=" %%a in ('dir /a-d /b "D:\A\*.png"') do (
- magick.exe composite -gravity north "!r%s%!" "%%a" ".\111\%%~na-water.png" )
- pause
复制代码
这样执行下来的结果变成了
magick.exe composite -gravity north "水印1" "图片1" ".\111\图片1-water.png"
magick.exe composite -gravity north "水印1" "图片2" ".\111\图片2-water.png"
magick.exe composite -gravity north "水印1" "图片3" ".\111\图片3-water.png"
和我预想的不一样, 求下解决办法和思路
作者: Five66 时间: 2023-10-30 17:05
试试将第三行放到第四行的for...do里面
作者: qq629926132 时间: 2023-10-30 17:36
回复 2# Five66
尝试了
结果如下:
如果直接放在Do后面, "!r%s%!" 变量直接无数据 do ( set /a s=!random!%%!h!+1
运行结果显示
magick.exe composite -gravity north "这里空的" "样品 ( 5).png" ".\111\样品 ( 5)-water.png"
如果放在Do后面 用括号引起来 do ( set /a s=!random!%%!h!+1 )
"%%a" 变量又没数据了
运行结果显示
magick.exe composite -gravity north "D:\样本\water\水印 (13).png " "%a"
是不是哪里没操作对
作者: Five66 时间: 2023-10-30 19:47
试试这样行不?- Setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /a-d /b /s "D:\A\watermark\*.png"') do (SET /A h+=1 & SET r!h!=%%i )
-
- for /f "delims=" %%a in ('dir /a-d /b "D:\A\*.png"') do (
- set name1=%%a
- set name2=%%~na
- set /a s=!random!%%!h!+1
- call :aaa
- )
- pause&exit/b
-
- :aaa
- magick.exe composite -gravity north "!r%s%!" "!name1!" ".\111\!name2!-water.png"
复制代码
作者: qq629926132 时间: 2023-10-31 09:13 标题: RE: 批处理如何给图片随机循环添加水印?
回复 4# Five66
测试没问题,完美解决,感谢! 也学习了
作者: Batcher 时间: 2023-11-1 08:51
回复 1# qq629926132
可以试试这个位置也随机的效果
https://mp.weixin.qq.com/s/mSfzh4YhBYGjiRpuOn6L7A
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |