批处理脚本不能从.bat文件工作

时间:2013-12-12 11:08:48

标签: windows batch-file for-loop cmd

我写了这个内容,允许我开始选美并加载.ppk文件夹中的所有%HOMEPATH%/.ssh个文件

就是这样:

start pageant && timeout 1 && FOR %k in ("%HOMEPATH%\.ssh\*.ppk") do start pageant %k

超时是为了防止多个选美实例(仅限WIN7,我知道)

因此,只需从命令行运行它即可。 Pageant启动并加载所有密钥。

但现在我想将它放在.bat文件中,以便我可以将其添加到startup文件夹中。

我尝试了所有这些组合:

start pageant && timeout 1 && FOR %k in ("%HOMEPATH%\.ssh\*.ppk") do start pageant %k

start pageant
timeout 1
FOR %k in ("%HOMEPATH%\.ssh\*.ppk") do start pageant %k

start pageant && timeout 1 && FOR %k in ("C:%HOMEPATH%\.ssh\*.ppk") do start pageant %k

start pageant
timeout 1
FOR %k in ("C:%HOMEPATH%\.ssh\*.ppk") do start pageant %k

start pageant && timeout 1 && FOR %k in ("C:\Users\Willem\.ssh\*.ppk") do start pageant %k

start pageant
timeout 1
FOR %k in ("C:\Users\Willem\.ssh\*.ppk") do start pageant %k

我还在FOR上尝试了几个选项,并尝试删除并在任何地方添加启动。 还有更多的变化,我在FOR循环运行时不断收到此错误

HOMEPATHk was unexpected at this time.

当我尝试通过.bat文件运行它时,它不起作用。 pageant.exe已添加到我的system32文件夹中,我使用的是最新的稳定版本。

我在这里错过了哪个新手错误,这不会从批处理文件中运行?

2 个答案:

答案 0 :(得分:1)

作为批处理文件运行时,将%加倍到%%。它是一个特殊字符,在批处理运行时必须进行转义,解释了它从命令行运行的原因,而不是批处理文件。

答案 1 :(得分:0)

最好使用多个参数调用Pageant,而不是多次调用它:

pageant %a %b %c %d ... 

如果已经打开,它就不会再启动了。