我需要在特定文件夹(例如:“C:\My Project”)中打开 cmd.exe,并在命令提示符中预先填充
blah.exe
。只是为了清楚这一点,我不需要执行blah.exe
,我只需要在命令提示符中预先填充这些字符。我不得不对此进行大量挖掘和搜索,但我能够找到一个非常符合我的问题的question。
我真的只是将其复制并粘贴到记事本中,并创建了两个单独的批处理文件
foo.bat
和bar.bat
。我唯一改变的当然是我想在命令提示符中出现的字符,(在我的例子中blah.exe
).
除了一件烦人的事情,脚本工作得很好。每当我启动
foo.bat
时,它都会调用我键盘上的 NumLocks 键。
我只知道Windows批处理文件的基础知识。任何人都可以查看这些文件并了解如何或在何处调用此 NumLocks 密钥吗?
foo.bat
的内容
@if (@CodeSection == @Batch) @then
@echo off
if NOT "%1"=="" goto PROGRAM
cmd /k foo.bat DONT_CLOSE_PROMPT
EXIT
:PROGRAM
set SendKeys=CScript //nologo //E:JScript "%~F0"
%SendKeys% "blah.exe "
goto :EOF
@end
// JScript section
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));
bar.bat
的内容
@ECHO OFF
if NOT "%1"=="" goto PROGRAM
cmd /k bar.bat DONT_CLOSE_PROMPT
EXIT
我尝试修改:
set SendKeys=CScript //nologo //E:JScript "%~F0"
至:
set SendKeys=CScript //nologo //E:JScript "%F0" or "%0"
但两次尝试都失败了。
好吧,我终于意识到发生了什么事。我使用一个名为 AutoHotKeys 的程序。我经常使用的脚本之一是启动我的浏览器并转到特定的 URL1,暂停,打开 URL 2 并在那里登录。我对其进行了编程,以便 NumLocks 键成为调用脚本的热键。由于此脚本始终加载在系统内存中,因此在启动 DOS 批处理文件时,遇到这行代码时会调用 NumLocks 键:
set SendKeys=CScript //nologo //E:JScript "%~F0"
我只需要重新编写 AHK 脚本,以便使用不同的热键。
===========================================
但是,我仍然不明白波浪号 (~) 是如何在我的批处理文件中调用 NumLocks 键的。当我删除它时,问题不会发生。但是,从我的批处理文件中删除 ~ 会破坏代码并且不会产生所需的结果。
还是一头雾水!