找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24400|回复: 7

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

[复制链接]
发表于 2019-3-14 20:54:50 | 显示全部楼层 |阅读模式
  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的转换语句。
发表于 2019-3-14 21:00:13 | 显示全部楼层
把 @echo off 删掉
假设代码的完整路径为 C:\test.bat
打开一个CMD窗口,执行命令:
C:\test.bat

这样可以看到详细的报错信息或者线索
发表于 2019-3-14 22:44:54 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2019-3-14 23:18:55 | 显示全部楼层
回复 2# Batcher


    谢谢,我试试去。
 楼主| 发表于 2019-3-14 23:20:55 | 显示全部楼层
回复 3# zaqmlp

增设了参数,应该行,谢谢你。
 楼主| 发表于 2019-3-15 20:56:41 | 显示全部楼层
回复 3# zaqmlp


有效果!
 楼主| 发表于 2019-3-15 20:57:38 | 显示全部楼层
回复 2# Batcher

原来还有这种调试批处理的方法,大开眼界,执行过程一目了然,再次谢谢!
 楼主| 发表于 2019-3-17 22:21:12 | 显示全部楼层
本帖最后由 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 01:20 , Processed in 0.031971 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表