联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
预先知识:set t=%t:*=%是个严重的语法错误,正确为:set “t=%t:^*=%” 代码一:因语法错直接一闪而过 @echo off call:r 2121212 pause :r set t=%1 ::set t=%t:*=% echo %t% pause代码二:正确 @echo off call:r "2121212" pause :r set t=%1 :: echo %t% pause 好像是call在做怪: 代码三:(正确执行) @echo off set t=%1 ::set t=%t:*=% pause 代码四:(好,将注释加强下,仍然语法错误,一闪而过!) @echo off call:r 2121212 pause :r set t=%1 :::set t=%t:*=% echo %t% pause 看来是*作怪:(另换一个语法错误的语句"if 5==") 代码五:正确 @echo off call:r 2121212 pause :r set t=%1 ::if 5== echo %t% pause
@echo off call:r 2121212 pause :r set t=%1 ::set t=%t:*=% echo %t% pause
@echo off call:r "2121212" pause :r set t=%1 :: echo %t% pause
@echo off set t=%1 ::set t=%t:*=% pause
@echo off call:r 2121212 pause :r set t=%1 :::set t=%t:*=% echo %t% pause
@echo off call:r 2121212 pause :r set t=%1 ::if 5== echo %t% pause
代码六:一闪而过 @echo off set t=2121212 call set t=%t:*=% pause
@echo off set t=2121212 call set t=%t:*=% pause
Originally posted by zw19750516 at 2008-5-11 08:35 AM: 兄弟不妨在::后加个空格试试看::: set...
@echo off call:r 2121212 pause :r set t=%1 :: set t=%t:*=% echo %t% pause
@echo off call:r 2121212 pause :r set t=%1 rem set t=%t:*=% echo %t% pause
@echo off call:r 2121212 pause :r :: set t=%t:*=% set t=%1 echo %t% pause
子过程里,若t有定义,那么注释语句里只要含有%t:*=时就是语法错误,CMD将直接退出。
Originally posted by zw19750516 at 2008-5-11 08:50 AM: @echo off call:r 2121212 pause :r set t=%1 rem set t=%t:*=% echo %t% pause 这样也是一样。 @echo off call:r 2121212 pause :r :: set t=%t:*=% set t=%1 e ...
@echo off call:r 2121212 pause :r :: set t=%t:*=% set t=%1 e ...
.....那么为什么“rem”也会出错呢?因为批处理是要进行预处理的,而在符号处理阶段已经出错。
rem/? 在批处理文件或 CONFIG.SYS 里加上注解或说明。