找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17797|回复: 7

批处理文件中%0路径为何会改变?

[复制链接]
发表于 2012-6-9 18:34:46 | 显示全部楼层 |阅读模式
小弟新学批处理,有些不懂的地方,请大家多多指点……如下第一个段是我奥第一个执行的批处理,在执行过程中会调用第二个批处理
  1. @echo off
  2. echo Please input (Y/N):
  3. set /p c=
  4. if /i %choose%=="y" goto :Reboot

  5. :Reboot
  6. echo reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run  /v Reboot /f >unistall.bat
  7. call  Auto_Run.bat
复制代码
下面是调用的Auto_Run.bat的内容
  1. @echo off
  2. reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run  /v Reboot /t REG_SZ /d %0
复制代码
非常奇怪的是,如果用第一个批处理来执行,第二个批处理文件写入注册表的Reboot值是“Reboot.bat”,但直接点击Auto_Run文件,写入注册表的Reboot信息是Auto_Run文件的完整路径,%0发挥的完整的作用……
看了Call的用法,也没提到会有变化……
 楼主| 发表于 2012-6-9 18:36:24 | 显示全部楼层
不好意思,发帖的时候不小心删改了,c应该是choose……
发表于 2012-6-9 21:04:38 | 显示全部楼层
把call改成start行吗?
发表于 2012-6-9 21:27:15 | 显示全部楼层
使用call  Auto_Run.bat时,%0、%1、%2...%9被当作参数引用。其中%0指的是Auto_Run.bat本身。

试试改成call "%~dp0Auto_Run.bat"
 楼主| 发表于 2012-6-10 22:28:15 | 显示全部楼层
回复 3# forfiles


    不行,我也不明白为什么……
 楼主| 发表于 2012-6-10 22:29:42 | 显示全部楼层
回复 4# apang
可以了,前面那个代码是什么意思?
另外,start不是另外调用去执行的吗?%0怎么变成了调用者本身的参数了呢?
发表于 2012-6-11 00:19:35 | 显示全部楼层
回复 6# wodesitanfu


试图回答,但表达能力不行,你还是仔细看看这里吧:
http://bbs.bathome.net/thread-14852-1-1.html
发表于 2012-6-11 12:25:19 | 显示全部楼层
http://www.bathome.net/viewthread.php?tid=16426
%0并不一定表示批处理“文件”路径,而是实际键入的“程序”名(包括标签名),但可以用%~f0、%~s0等扩展成文件路径,曾经的verybat论坛有相关帖子论述。

把Auto_Run.bat中的%0换成"%~f0"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 06:08 , Processed in 0.019012 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表