本帖最后由 lengyff 于 2019-3-17 22:32 编辑
再次更新:
批处理编写注意事项
1、中文编码问题常常会直接影响bat的执行,事半功倍。
用其它编辑器编写代码时,建议用Emeditor高版本,直接更改语言和编码分别为bat和GB2312中文,编写的代码也许用记事本打开时,中文会显示乱码,但是拖到emeditor中显示就是正常的,一点儿都不影响执行效果!
一般不推荐用记事本编写程序,非用用记事本编写时,为支持中文防止乱码,建议保存为ANSI格式。
notepad++更改为GB2312后,重新拖入后,又变成了utf8格式,所以也不建议使用。
2、for %%i中的i在大小写方面敏感,建议同一个变量名称,前后大小写一致。
3、输出文件名保存时,建议使用%%~nx0等类似扩展,成功率比较高,可以用echo;"%%b"、"%%~nxb"测试值是否正确。。
4、重要的事情说三遍!!!
建议选择emeditor作为批处理编辑器,更改语言和编码分别为bat和GB2312中文!!!
建议选择emeditor作为批处理编辑器,更改语言和编码分别为bat和GB2312中文!!!
建议选择emeditor作为批处理编辑器,更改语言和编码分别为bat和GB2312中文!!!
原来的例子可以修改为如下测试代码:- @echo off
- mkdir out
- for /r ".\原件" %%B in (*.jpg) do (
- echo;"%%B"
- magick convert "%%B" -define jpeg:extent=300kb "out/%%B"
- echo;"out/%%B"
- rem 明显可见"out/%%B"为整个路径名称,无法存入。echo真是个好东东!!!
- )
- pause
复制代码 发现测试错误后,引入%0变量修改为:- @echo off
- mkdir out
- for /r ".\原件" %%B in (*.jpg) do (
- echo;"%%B"
- magick convert "%%B" -define jpeg:extent=300kb "out/%%~nxB"
- echo;"out/%%~nxB"
- rem 明显可见"out/%%B"为整个路径名称,无法存入。echo真是个好东东!!!
- )
- pause
复制代码
|