标题: [文件操作] [已解决]批处理怎样判断一个已修改后缀文件的本质后缀 [打印本页]
作者: smss 时间: 2019-6-20 09:09 标题: [已解决]批处理怎样判断一个已修改后缀文件的本质后缀
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d /s *.jpg *.png') do (set "file=%%~nxi"
- if "!file:~-6!" neq ".9.png" (%~dp0cwebp.exe -q 88 "%%i" -o "%%~dpi%%~ni.webp"&del /s/q/f/a "%%i"&cd %%~dpi&ren "%%~ni.webp" "%%~nxi")
- )1>nul 2>nul
- pause
复制代码
如A.png转成A.webp后删除原A.png,A.webp被改为A.png取代了原先真PNG
能否通过脚本判断该A.png本质还是A.webp 则不再循环处理该A.png
作者: miqilaosu 时间: 2019-6-20 09:28
本帖最后由 miqilaosu 于 2019-6-20 09:34 编辑
回复 1# smss
文件名没变的话,你通过文件名判断就好了啊,%%~ni.png
作者: smss 时间: 2019-6-20 09:35
本帖最后由 smss 于 2019-6-20 09:47 编辑
回复 2# miqilaosu
能想到的方法是对处理后的PNG加隐藏属性 规避脚本循环
作者: miqilaosu 时间: 2019-6-20 09:55
本帖最后由 miqilaosu 于 2019-6-20 10:47 编辑
回复 3# smss
处理完的文件后辍名不用PNG和jpg,因为后辍名不同所以不会被查到,这种方法使用的多一些- ren "%%~ni.webp" "%%~nxixy"
复制代码
比如A.png改成A.pngxy A.jpg改成A.jpgxy脚本执行结束前在批量改回来- ren *.pngxy *.png
- ren *.jpgxy *.jpg
复制代码
反正批量改名处理很快
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
还有个笨的方法就是把所有文件加路径读取放到记事本- dir /b /a-d /s *.jpg *.png>png.log
复制代码
,然后FOR读取记事本处理,不会出现重复循环
作者: smss 时间: 2019-6-20 10:31
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /ad /a-h /s *.jpg *.png') do (set "file=%%~nxi"
- if "!file:~-6!" neq ".9.png" (%~dp0cwebp.exe -q 88 "%%i" -o "%%~dpi%%~ni.webp"&del "%%i"&cd %%~dpi&ren "%%~ni.webp" "%%~nxi"&attrib "%%~nxi" +r +h)
- )1>nul 2>nul
- pause
复制代码
通过对处理后文件加隐藏属性实现
作者: miqilaosu 时间: 2019-6-20 10:44
本帖最后由 miqilaosu 于 2019-6-20 10:51 编辑
回复 5# smss
*.webp 改回png,jpg操作一次,隐藏属性一次,隐藏属性改回来一次,同一文件操作了三次
*.webp改成*.pngxy,*.jpgxy,一次,最后再回来一次,同一文件操作了二次
个人感觉操作次数越少越好- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /ad /a-h /s *.jpg,*.png') do (set "file=%%~nxi"
- if "!file:~-6!" neq ".9.png" (%~dp0cwebp.exe -q 88 "%%i" -o "%%~dpi%%~ni.webp"&del "%%i"&cd %%~dpi&ren "%%~ni.webp" "%%~nxixy")
- )1>nul 2>nul
- ren *.pngxy *.png
- ren *.jpgxy *.jpg
- pause
复制代码
作者: smss 时间: 2019-6-20 11:04
本帖最后由 smss 于 2019-6-20 11:13 编辑
回复 6# miqilaosu
你没有看明白 加隐藏是为了下次如果对该文件做同样的处理时规避重复操作
如:已对A文件夹下含所有子文件夹处理完毕 如果再次对A文件夹处理 则所有隐藏属性的图片将不会被再次处理,因为通过dir /b /ad /a-h /s过滤掉了 它将仅对那些新加入的图片(无隐藏属性的图片)处理
作者: miqilaosu 时间: 2019-6-20 12:16
本帖最后由 miqilaosu 于 2019-6-20 13:13 编辑
回复 7# smss - @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d /s *.jpg *.png') do (
- set "file=%%~nxi"&set "smss=9"
- findstr/i "%%i" webp.log >nul 2>nul&&set "smss="
- if defined smss (
- if "!file:~-6!" neq ".9.png" (%~dp0cwebp.exe -q 88 "%%i" -o "%%~dpi%%~ni.webp"&del /s/q/f/a "%%i"&cd %%~dpi&ren "%%~ni.webp" "%%~nxi"&&echo,%%i>>webp.log)
- )
- )1>nul 2>nul
- pause
复制代码
那这样写应该也可以吧
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |