2009-02-17 50 views
0

在windows上,我试图使用%〜f1参数获取文件名。从批处理脚本中读取参数的问题

我正在从我添加到上下文菜单的新语音(命令)中执行此操作。

在Windows注册表中,语音只是调用批处理脚本,通过这种方式打印文件名, :

`C:\script.bat %~f1` 

,但我得到这样的输出:

`C:\Documents and Settings\Administrator\Desktop\%~f1` 

如此,路径没问题,但是文件名呢?!

对此提出建议?谢谢!

+0

蝙蝠的内部会很好。 – 2009-02-17 13:58:23

回答

2

当触发的上下文菜单项,就这样通过浏览器(不cmd.exe的)和浏览器做不执行%〜F1。因此你得到当前的结果。

你需要的是修改你的脚本,以便它接收整个文件名(你可能只在注册表中放置'C:\ script.bat%1'或'C:\ script.bat')并更新你的脚本使用%〜f1:

@echo first argument: %1 
@echo filename only: %~f1 
@notepad %~f1 

祝你好运!

+0

如果你直接调用它,你可能会想把参数用引号括起来,例如'C:\ script.bat“%1”',否则文件名中的空格可能会混淆。 – 2009-02-17 14:19:21

0

尝试将整个变量括在%的位置。

C:\script.bat %~f1%