标题: [文件操作] 批处理 for语句不执行? [打印本页]
作者: lengyff 时间: 2019-3-14 20:54 标题: 批处理 for语句不执行?
- @echo off
- mkdir out
- for /r .\原件 %%B in (*.jpg) do magick convert "%%B" -define jpeg:extent=300kb "out/%%B"
复制代码
这个语句怎么不能正常执行呢?
magick convert 为imagemagic的转换语句。
作者: Batcher 时间: 2019-3-14 21:00
把 @echo off 删掉
假设代码的完整路径为 C:\test.bat
打开一个CMD窗口,执行命令:
C:\test.bat
这样可以看到详细的报错信息或者线索
作者: zaqmlp 时间: 2019-3-14 22:44
- @echo off
- title 互助互利,扫码头像,感谢赞助;有什么问题,可加QQ956535081及时沟通
- cd /d "%~dp0"
- md ".\out\" 2>nul
- for /r ".\原件" %%b in (*.jpg) do (
- echo;"%%b"
- magick convert "%%b" -define jpeg:extent=300kb ".\out\%%~nxb"
- )
- pause
复制代码
作者: lengyff 时间: 2019-3-14 23:18
回复 2# Batcher
谢谢,我试试去。
作者: lengyff 时间: 2019-3-14 23:20
回复 3# zaqmlp
增设了参数,应该行,谢谢你。
作者: lengyff 时间: 2019-3-15 20:56
回复 3# zaqmlp
有效果!
作者: lengyff 时间: 2019-3-15 20:57
回复 2# Batcher
原来还有这种调试批处理的方法,大开眼界,执行过程一目了然,再次谢谢!
作者: lengyff 时间: 2019-3-17 22:21
本帖最后由 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
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |