|
|
楼主 |
发表于 2023-11-14 10:20:31
|
显示全部楼层
【原因分析】
这段脚本里面糟糕的代码风格有多处,我们集中看看导致悲剧的这一行:- if exist *.jpg if exist *.png if exist *.bmp mkdir /p "图片"
复制代码 问题1:
创建文件夹的时候 /p 参数在Linux系统里面某些情况下是有用的。
而Windows系统里面既不支持这个参数,也不需要这个参数。
应该修改为 md "图片"
问题2:
这句代码里面,多个if条件写在一行,是逻辑“且”的意思,而不是逻辑“或”。
也就是说:- if exist *.jpg if exist *.png if exist *.bmp md "图片"
复制代码 相当于:- if exist *.jpg (
- if exist *.png (
- if exist *.bmp (
- md "图片"
- )
- )
- )
复制代码 很明显这意味着需要同时存在jpg、png、bmp三种格式,它才会创建“图片”文件夹。
如果一开始就把脚本写成这个格式,也许使用者就不会被迷惑了吧。
运行代码的时候,由于只有一种或两种格式,“图片”文件夹没有被创建,于是:
move "%%i" "图片"
这里本来是想把文件移动到“图片”文件夹,结果实际是把文件重命名为“图片”。
可以修改成这样表示逻辑“或”:- if exist *.jpg (
- md "图片"
- )
- if exist *.png (
- md "图片"
- )
- if exist *.bmp (
- md "图片"
- )
复制代码 整个原始脚本里面类似的错误还有多处,这里不再赘述。
结论:
踏踏实实按照正确(也许是一种你觉得难看)的格式书写代码。
备份。备份。备份。 |
|