Board logo

标题: [文件操作] [已解决]如何处理unzip参数内的带空格的路径? [打印本页]

作者: zjw767676    时间: 2009-12-13 22:56     标题: [已解决]如何处理unzip参数内的带空格的路径?


用unzip将zip文件解压到指定文件夹
  1. @echo off
  2. unzip "bak.zip" -d e:\as\
  3. pause
复制代码
指定路径不能加引号如:"e:\as\"加了会出错
那如何处理带空格的路径呢?

[ 本帖最后由 zjw767676 于 2009-12-13 23:12 编辑 ]
作者: Batcher    时间: 2009-12-13 23:02

把最后那个\删掉
C:\Test>unzip a.zip -d "C:\test\Bat Home"
Archive:  a.zip
extracting: C:/test/Bat Home/a.txt

作者: zjw767676    时间: 2009-12-13 23:11     标题: 回复 2楼 的帖子

原来是这样,感谢Batcher!!!!!!
我发现这样也可以:
  1. @echo off
  2. unzip "bak.zip" -d "e:\a s\
  3. pause
复制代码
难道这里的"和\也能组成一对吗?
作者: zqz0012005    时间: 2009-12-14 12:49

命令行的解析问题,引号"并不是命令行实际参数的组成部分,只是为了对引号对中的特殊字符进行转义(将起分隔符作用的空格变成普通意义上的空格)。
比如上面的命令只有一个参数,行首的引号将后面的空格都转义了
"C:\Program Files\Internet Explorer\IEXPLORE.EXE
由于MS瘟到死CMD程序的按行处理机制,且引号不能转义回车符(行结束符),一行输入结束就是命令行结束,因此可以不要配对的另一个引号,命令行中原有的最后一个引号后面的内容自动成为一个参数。
Linux的shell就完善多了。
作者: zjw767676    时间: 2009-12-14 13:18     标题: 回复 4楼 的帖子

加一个引号明白了!
那请问版主为什么加了引号对反而出错呢?就多了个\
"e:\a s"   正确
"e:\a s\   正确
"e:\a s\"  错误
"e:\as\"  错误

[ 本帖最后由 zjw767676 于 2009-12-14 13:23 编辑 ]
作者: zqz0012005    时间: 2009-12-14 19:12

能否给出出错提示?
可能是unzip程序将\当作了转义字符,即它认为的路径是e:\a s",后面多了个引号。
作者: zjw767676    时间: 2009-12-14 19:47     标题: 回复 6楼 的帖子

版主真高人啊!
  1. @echo off
  2. %~dp0\sanfang\unzip -o %~dp0\"OneKey_6.3_XiaZaiBa.zip" -d "d:\Program Files\one\"
  3. pause
复制代码
[attach]2107[/attach]

[ 本帖最后由 zjw767676 于 2009-12-14 19:49 编辑 ]




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2