[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

也讨论一下

没空格的路径, 一般加引号不会有错,

ms-its:C:\WINDOWS\Help\ntcmds.chm::/for.htm
for /F ["usebackqParsingKeywords"] {%% | %}variable in ("filenameset") do command [CommandLineOptions]

for /F ["usebackqParsingKeywords"] {%% | %}variable in ('LiteralString') do command [CommandLineOptions]
usebackq 指定可以使用引号引用 filenameset 中的文件名称,将后面带有引号的字符串作为一个命令执行,而带有单引号的字符串是文字字符串命令。
...
通过将 Filenameset 包括在圆括号内,并且外面再带上单引号(即,'filenameset'),可以使用 for /F 对直接字符串解析逻辑。将 Filenameset 视为从某个文件输入的单行,然后接受解析。
...
如果您提供的文件名包含空格,请使用引号将文本引起来(例如,"File Name")。要使用引号,必须使用 usebackq。否则,就将引号解释为定义要解析的文字字符串。

[ 本帖最后由 neorobin 于 2009-12-10 22:17 编辑 ]

TOP

回复 5楼 的帖子

我看应该是的, 我以前在 winRAR 的的自动安装注解中用过, 也是其中的空格总造成错误, 加了双引号括起来就好了
我用的变量是 programfiles,  通常它的值就是 C:\Program Files  有空格的

TOP

试验了一下

下面会出错: 找不到文件, 因为有引号, 所以创建, 删除 都成功了, 最后当然找不到
  1. echo 引号与空格>"%programfiles%\~"&del "%programfiles%\~"&write "%programfiles%\~"
复制代码
而这个可成功打开文件, 只是删除没用引号造成失败, 所以成功打开文件
  1. echo 引号与空格>"%programfiles%\~"&(del %programfiles%\~||write "%programfiles%\~")
复制代码

TOP

而且很难置信的, 微软命令行对引号的位置都不是定得很死的
在命令行下, 这样是打不开的
  1. C:\Program Files\Windows NT\Accessories\wordpad.exe
复制代码
但这两种都可以打开
  1. C:\Pr"ogram Files\Windows NT\Accessories\wordpad.exe
复制代码
  1. C:\Program" Files\Windows NT\Accessories\wordpad.exe
复制代码
而这样就不行了
  1. C:\Program "Files\Windows NT\Accessories\wordpad.exe
复制代码
关键是引号要在第一个空格的前面, 而且一些情况下, 是不必要成对的

TOP

回复 15楼 的帖子

确实如此, 微软命令行肯定有好多奇怪的地方, (像我这样的菜鸟不了解, 不精通只能说是怪了, 哈哈)

但又难找到非常详细, 精确, 全面, 系统的说明资料,

只能尽量不要用那些 "旁门左道", 写最 "规矩" 的代码了, 尽管有时会显得 不"精", 不"简"

TOP

回复 16楼 的帖子

这个所谓的 "一键清理垃圾" 要真是垃圾, 第一行就应该是 del %0, 哈哈, 我从不用它, 至少感觉那个效率真是太低了, 系统自身就会自动处理那些个临时文件啊什么的, 象 360 之类的软件清理比它高效多了

TOP

回复 20楼 的帖子

看了下, 认识多了些, 看来许多临时目录和文件远比许多人想象的要重要得多, 不要随便拿它们开刀, 不然让你不爽!

TOP

返回列表