从上下文菜单执行的批处理文件 - 打开'之间的不同行为。和'

时间:2015-06-19 09:25:17

标签: windows batch-file

我有一个问题,取决于创建的批处理文件(通过上下文菜单在文件上运行 - 右键单击​​)会产生不同的结果。

如果选择批处理文件作为默认程序(不需要设置)来打开文件,它可以正常工作。即右键单击>'开放'或双击

如果批处理文件只能从'打开'菜单但默认程序不同(所需的设置)批处理文件启动但没有产生结果

批处理文件非常简单,执行一个需要两个参数的程序 - 输入文件和目标文件夹:

@echo off
"PCAP Generator.exe" %~dpnx1 %cd%
DEL *.log /q

您能否帮助解释行为不同的原因? 如果可以通过右键单击>选择批处理文件,您是否可以帮助更正批处理文件以使其正常运行? '打开'菜单并不是打开文件的默认程序。

提前致谢

2 个答案:

答案 0 :(得分:1)

问题是:

如果'打开'使用%cd%位置设置为C:\ Windows \ system32

C:\Windows\system32>ECHO cd "C:\Windows\system32"

如果脚本设置为默认值并通过'打开'然后%cd%location正确设置到输入文件所在的文件夹。

C:_LOGS>ECHO cd "C:_LOGS"

避免此问题的解决方案是:

@echo off
"PCAP Generator.exe" "%~f1" C:%~p1
del C:%~p1*.log

非常感谢您的帮助

答案 1 :(得分:0)

最有可能的是:

@echo off
if not "%~1" == "" (
    "PCAP Generator.exe" "%~f1" "%~dp1"
    del /Q "%~dp1*.log" 2>nul
)

如果在没有参数的情况下调用批处理文件,则进行简单的测试。

%~dp1引用传递给此批处理文件的第一个参数的驱动器号和路径。该字符串以反斜杠结尾。

删除日志文件是在安静模式下完成的,如果目录中没有LOG文件,则会禁止显示错误消息。

有关使用过的命令的详细信息,请打开命令提示符窗口并执行:

  • call /? ...输出帮助解释了%~dp1%~f1
  • del /? ...输出帮助解释了选项/Q

通常,在命令提示符窗口中运行带有参数/?的命令或控制台应用程序,可以在1个或多个窗口页面中获取此命令或控制台应用程序输出的帮助。

还有一个命令help列出了Windows标准命令,如果在没有任何参数的情况下执行,而help运行help call之类的命令会产生与运行call /?时相同的帮助输出1}}。