标题: [文件操作] cmd执行bat文件,文件名以及参数都带空格怎么处理? [打印本页]
作者: lu.zhao 时间: 2017-5-31 11:15 标题: cmd执行bat文件,文件名以及参数都带空格怎么处理?
我写了一个脚本文件,是为了删除一个特定的文件,代码如下:- @echo off
- set a=%1
- del %a%\"a b a.txt"
复制代码
我打开cmd后的执行的命令如下:- cmd /C "f:\a b c d\aa bb cc.bat" "f:\cd adb a\aa bb"
复制代码
由于路径中都带有空格所以我都加上了引号。但是执行后显示:
'f:\a' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
求教各位大神这个如何处理?
作者: lu.zhao 时间: 2017-5-31 11:49
有没有了解这个是什么原因造成的啊?亲人们。感觉我加的引号貌似么有起作用,在执行的时候只读取到了
f:\a这个参数,空格后面的被当成独立的个体来对待了。
作者: 老刘1号 时间: 2017-5-31 12:12
DEL /F "%~1\a b a.txt"
作者: 老刘1号 时间: 2017-5-31 12:14
CMD /C CALL "f:\a b c d\aa bb cc.bat" "f:\cd adb a\aa bb"
作者: 老刘1号 时间: 2017-5-31 12:18
C:\Documents and Settings\Administrator>cmd/?
启动 Windows 命令解释程序一个新的实例
CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
[[/S] [/C | /K] string]
/C 执行字符串指定的命令然后中止
/K 执行字符串指定的命令但保留
/S 在 /C 或 /K 后修改字符串处理(见下)
/Q 关闭回显
/D 从注册表中停用执行 AutoRun 命令(见下)
/A 使向内部管道或文件命令的输出成为 ANSI
/U 使向内部管道或文件命令的输出成为 Unicode
/T:fg 设置前景/背景颜色(详细信息,请见 COLOR /?)
/E:ON 启用命令扩展(见下)
/E:OFF 停用命令扩展(见下)
/F:ON 启用文件和目录名称完成字符(见下)
/F:OFF 停用文件和目录名称完成字符(见下)
/V:ON 将 ! 作为定界符启动延缓环境变量扩展。如: /V:ON 会
允许 !var! 在执行时允许 !var! 扩展变量 var。var 语法
在输入时扩展变量,这与在一个 FOR 循环内不同。
/V:OFF 停用延迟环境扩展。
请注意,如果字符串有引号,可以接受用命令分隔符 '&&' 隔开
的多个命令。并且,由于兼容原因,/X 与 /E:ON 相同,/Y 与
/E:OFF 相同,并且 /R 与 /C 相同。忽略任何其他命令行开关。
如果指定了 /C 或 /K,命令行开关后的命令行其余部分将作为命令行处
理;在这种情况下,会使用下列逻辑处理引号字符("):
1. 如果符合下列所有条件,那么在命令行上的引号字符将被
保留:
- 不带 /S 命令行开关
- 整整两个引号字符
- 在两个引号字符之间没有特殊字符,特殊字符为下列中的
一个: <>()@^|
- 在两个引号字符之间有至少一个空白字符
- 在两个引号字符之间有至少一个可执行文件的名称。
2. 否则,老办法是,看第一个字符是否是一个引号字符,如果
是,舍去开头的字符并删除命令行上的最后一个引号字符,
保留最后一个引号字符之后的文字。
作者: 0000 时间: 2017-5-31 20:05
本帖最后由 0000 于 2017-5-31 20:06 编辑
cmd /s /c ""f:\a b c d\aa bb cc.bat" "f:\cd adb a\aa bb""
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |