批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[文件操作] 批处理 for语句不执行?

  1. @echo off
  2. mkdir out
  3. for /r .\原件 %%B in (*.jpg) do magick convert "%%B" -define jpeg:extent=300kb "out/%%B"
复制代码
这个语句怎么不能正常执行呢?
magick convert 为imagemagic的转换语句。


附件: 您需要登录才可以下载或查看附件。没有帐号?注册

把 @echo off 删掉
假设代码的完整路径为 C:\test.bat
打开一个CMD窗口,执行命令:
C:\test.bat

这样可以看到详细的报错信息或者线索
【扫描二维码捐助论坛的朋友请留言注明论坛账号】http://bbs.bathome.net/thread-10403-1-1.html
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

TOP

  1. @echo off
  2. title 互助互利,扫码头像,感谢赞助;有什么问题,可加QQ956535081及时沟通
  3. cd /d "%~dp0"
  4. md ".\out\" 2>nul
  5. for /r ".\原件" %%b in (*.jpg) do (
  6.     echo;"%%b"
  7.     magick convert "%%b" -define jpeg:extent=300kb ".\out\%%~nxb"
  8. )
  9. pause
复制代码
提供代写,省时省力省事,支付宝扫码头像支付,QQ956535081

TOP

回复 2# Batcher


    谢谢,我试试去。

TOP

回复 3# zaqmlp

增设了参数,应该行,谢谢你。

TOP

回复 3# zaqmlp


有效果!

TOP

回复 2# Batcher

原来还有这种调试批处理的方法,大开眼界,执行过程一目了然,再次谢谢!

TOP

本帖最后由 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中文!!!

原来的例子可以修改为如下测试代码:
  1. @echo off
  2. mkdir out
  3. for /r ".\原件" %%B in (*.jpg) do (
  4. echo;"%%B"
  5. magick convert "%%B" -define jpeg:extent=300kb "out/%%B"
  6. echo;"out/%%B"
  7. rem 明显可见"out/%%B"为整个路径名称,无法存入。echo真是个好东东!!!
  8. )
  9. pause
复制代码
发现测试错误后,引入%0变量修改为:
  1. @echo off
  2. mkdir out
  3. for /r ".\原件" %%B in (*.jpg) do (
  4. echo;"%%B"
  5. magick convert "%%B" -define jpeg:extent=300kb "out/%%~nxB"
  6. echo;"out/%%~nxB"
  7. rem 明显可见"out/%%B"为整个路径名称,无法存入。echo真是个好东东!!!
  8. )
  9. pause
复制代码

TOP

返回列表