Board logo

标题: [文本处理] [已解决]批处理的@shift作用是什么? [打印本页]

作者: summerday    时间: 2011-2-28 02:13     标题: [已解决]批处理的@shift作用是什么?

用Quick Batch File Compiler制作的EXE后,在临时文件夹里找到了BAT的源码,但是查看代码的时候发现在源代码最前头多了一行@shift,请问这行是什么意思,最重要的是,在@shift之下,del %0这行删除自身的代码就变成无效了,我加上pause查看的时候,del %0这行代码显示的是“命令语法不正确”。请高手们帮我解答下。

我想知道的是,①为什么Quick Batch File Compiler生成的EXE里的BAT代码会多了一行@shift在前面?[email=②@shift]② @shift[/email]是有什么作用?③为什么有了@shift之后del %0这行命令会提示命令语法错误?

[ 本帖最后由 summerday 于 2011-3-1 02:26 编辑 ]
作者: wc726842270    时间: 2011-2-28 17:04

确实0%这种用法我也没见过。不过LZ是不是写错了,是%0吧!·!!!另外LZ的标题于内容差距很大啊
作者: summerday    时间: 2011-2-28 19:10

原帖由 wc726842270 于 2011-2-28 17:04 发表
确实0%这种用法我也没见过。不过LZ是不是写错了,是%0吧!·!!!另外LZ的标题于内容差距很大啊


是%0,呵呵,是我在这里写错了,但是真的是在前面加上@shift之后del %0就是提示命令语法错误。
标题和内容有什么问题吗?我想知道的是,①为什么Quick Batch File Compiler生成的EXE里的BAT代码会多了一行@shift在前面?[email=②@shift]② @shift[/email]是有什么作用?③为什么有了@shift之后del %0这行命令会提示命令语法错误?
作者: 随风    时间: 2011-2-28 19:39

shift 是参数移位,运行后 %0  以不存在,del 后面没有了文件名,当然就提示语法错误了
话说以前还真没注意过这个问题
作者: Batcher    时间: 2011-2-28 20:51

最后一行:
  1. start cmd /c del /f /a /q "%~f0"
复制代码





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