查看: 10070|回复: 8
收起左侧

[已解决] 注册表里的“%1”什么意思以及用什么代表当前目录的路径?

 关闭 [复制链接]
随便注册
发表于 2012-4-27 15:28:55 | 显示全部楼层 |阅读模式
本帖最后由 随便注册 于 2012-4-29 22:17 编辑

用了一个TommSearch,设置“集成到资源管理器”后,在“文件夹上”的右键菜单就有相应的菜单,可以直接定位到该文件夹,不需要用户再指定了,这是它添加到注册表的键值:

  1. [HKEY_CLASSES_ROOT\Directory\shell\TommSearch]
  2. @="搜索(&T)"

  3. [HKEY_CLASSES_ROOT\Directory\shell\TommSearch\command]
  4. @=""C:\\TommSearch.exe" "%1""
复制代码
现在我想移植到“文件夹空白处”的右键菜单里,但是如何取得当前文件夹路径?还用“%1”就不行了,不加这个就只是启动程序,还要再输入搜索范围才行。
  1. [HKEY_CLASSES_ROOT\Directory\Background\shell\TommSearch]
  2. @="搜索(&T)"

  3. [HKEY_CLASSES_ROOT\Directory\Background\shell\TommSearch\command]
  4. @=""C:\\TommSearch.exe" "%1""
复制代码
============

经过一下午的艰苦搜索,找到个dos命令的%cd%,但是不能写进注册表,不认

只好饶了一圈,用一个cmd来调用

注册表
  1. [HKEY_CLASSES_ROOT\Directory\Background\shell\TommSearch\command]
  2. @=""C:\\TommSearch.cmd""
复制代码
TommSearch.cmd
  1. start C:\TommSearch.exe %cd%
复制代码
问题又来了,这绕远了,还能不能简化?二是为什么start不能加引号?写成start “C:\TommSearch.exe”就不能用?

linexp
头像被屏蔽
发表于 2012-4-27 20:26:59 | 显示全部楼层
  1. start "title" "c:/test.exe"
复制代码
第一个引号里面是标题,第二个是路径。你写的那个路径为空了。
yloko
发表于 2012-4-27 20:37:07 | 显示全部楼层
本帖最后由 yloko 于 2012-4-27 20:42 编辑

一、
[HKEY_CLASSES_ROOT\Directory\shell\TommSearch\command]

[HKEY_CLASSES_ROOT\Directory\shell   右键菜单的大项
[HKEY_CLASSES_ROOT\Directory\shell\TommSearch  右键菜单——》TommSearch  软件注册大项
[HKEY_CLASSES_ROOT\Directory\shell\TommSearch  默认值为:TommSearch软件在右键显示的“文字”。注:这个文字也有可能是由TommSearch 下面的dll关联自动提供。每次重启后生效。
[HKEY_CLASSES_ROOT\Directory\shell\TommSearch\command  TommSearch  软件注册大项——》实际执行动作。

二、动作
@="\"C:\\TommSearch.exe\" \"%1\""
默认值="c:\TommSearch.exe"   以"%1"的方式把目标“文件夹”装载到TommSearch.exe中运行
完整条目:"c:\TommSearch.exe" "%1"
注:你贴子里的动作是批处理动作,最终达到的目地还是::"c:\TommSearch.exe" "%1"

三、start 加引号或不加引号的区别好像是,一个是在DOS窗口下运行(如果你那个TommSearch.exe不支持dos下运行的话,就中止运行);一个是如果dos不支持,那么就在外部explorer下运行,你可以理解为一个是绝对值,一个是变量值。。

更多信息:start  /?
随便注册
 楼主| 发表于 2012-4-27 20:37:43 | 显示全部楼层
linexp 发表于 2012-4-27 20:26
第一个引号里面是标题,第二个是路径。你写的那个路径为空了。

感谢

现搜现学基础不牢啊
随便注册
 楼主| 发表于 2012-4-27 20:58:46 | 显示全部楼层
本帖最后由 随便注册 于 2012-4-29 22:16 编辑
yloko 发表于 2012-4-27 20:37
一、
[HKEY_CLASSES_ROOT\Directory\shell\TommSearch\command]


“以"%1"的方式把目标“文件夹”装载到”

是啊,可是怎么把当前文件夹表示进去呢?我发现很多关联的右键菜单都是用的这个"%1",可能"%1"就是代表右击的目标比如文件夹或文件。但不知道怎么表示当前文件夹?

用批处理是没办法,%cd%在批处理里exe能接收到路径参数并使用。用到注册表里,打开后exe不是路径而是字符cd了。

制作好后的效果是这样,如果想往上往下换个位置应当怎么做?
yloko
发表于 2012-4-27 21:15:09 | 显示全部楼层
本帖最后由 yloko 于 2012-4-27 21:27 编辑
随便注册 发表于 2012-4-27 20:58
“以"%1"的方式把目标“文件夹”装载到”

是啊,可是怎么把当前文件夹表示进去呢?我发现很多关联的 ...


%1指的是动作类型。
" "指的是当前目标

右键的排序我不会,
我想应该在在软件注册项里面吧,,你先找到TommSearch这个软件的注册地址是多少
在HKEY_CLASSES_ROOT\CLSID   下面看看TommSearch的注册项地址下面找找有没有相关排序的参数,
或者在格式关联里看看
HKEY_CLASSES_ROOT\*
随便注册
 楼主| 发表于 2012-4-27 21:24:07 | 显示全部楼层
yloko 发表于 2012-4-27 21:15
%1指的是动作类型。
" "指的是当前目标

还有2%、3%、4%……什么的么?
yloko
发表于 2012-4-27 21:31:42 | 显示全部楼层
本帖最后由 yloko 于 2012-4-27 21:35 编辑
随便注册 发表于 2012-4-27 21:24
还有2%、3%、4%……什么的么?


不知道,,

这个动作,你可以理解为一种“约定成熟”的规定,,一个外部开关1%指定的动作,它必定会在exe里面放置一个相同1%的开关接收命令,来执行相关联的动作,
比如:在EXE里面1%的意思是:删除目标文件夹。
那么:这时你在外部加个1%的开关命令,就是执行“删除目标文件夹”的动作。。。。

所以,他并没有一个特定的动作,而是一个“约定成熟”的习惯动作的开关。。。。

也就是说在TommSearch下有可能并没有1%...3%之类的命令,这要看作者是怎么设计这个exe了


在习惯下,win自身的exe,都会在exe /? 命令下做对这个命令的参数解释。。。
随便注册
 楼主| 发表于 2012-4-27 21:36:33 | 显示全部楼层
yloko 发表于 2012-4-27 21:31
不知道,,

这个动作,你可以理解为一种“约定成熟”的规定,,一个外部开关1%指定的动作,它必定会 ...

谢谢
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-6-24 19:34 , Processed in 0.131504 second(s), 16 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

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