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

[其他] [已解决]cmd /c命令中有特殊字符时为何出错?

[复制链接]
发表于 2011-10-31 23:55:55 | 显示全部楼层 |阅读模式
如果这样:
  1. cmd /c "C:\users\raymai\desktop\abc desktop\yo.bat"
复制代码
就不会有问题。

但如果这样:
  1. cmd /c "C:\users\raymai\desktop\abc @ desktop\yo.bat"
复制代码
就会出现问题了,会提示找不到文件。

为何即使有双引号,也会出错呢?要如何解决呢?

—————————————————— 答案 ——————————————————
应该改成 cmd /c ""C:\users\raymai\desktop\abc @ desktop\yo.bat"" 或者 cmd /c @"C:\users\raymai\desktop\abc @ desktop\yo.bat"

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-11-1 01:37:54 | 显示全部楼层
cmd /c ""含空格的路径""
或者
cmd /c @"含空格的路径"

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-11-1 08:58:23 | 显示全部楼层
回复 2# CrLf


    非常感谢你~ 问题解决了~
发表于 2011-11-7 13:16:10 | 显示全部楼层
回复 2# CrLf


    Why?能解释一下原理吗
发表于 2011-11-7 16:32:16 | 显示全部楼层
本帖最后由 CrLf 于 2011-11-7 17:43 编辑

回复 4# Hello123World


    把想法翻译成代码时不要直译,要意译,确保解释器能够正确理解我们的意图。
   cmd /c 发现参数的第一个字符为双引号时,认为整个参数被双引号转义了,所以会有一个去掉前后双引号的动作,所以,为了避免 cmd 将参数中所必须打头的双引号误杀,思路上有两个大方向:
一、让双引号不打头,可以用诸如 @、.\ 或者 %%空变量%% 等合法的内容来为参数化妆
二、既然 cmd 喜欢去双引号,那我们就满足它好了,干脆添加一对前后双引号当炮灰,真正的参数却躲在炮灰的保护之中

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 06:56 , Processed in 0.017953 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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