Windows 批处理文件由于某种原因正在调用 NumLocks 键

问题描述 投票:0回答:1

我需要在特定文件夹(例如:“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"

但两次尝试都失败了。

batch-file
1个回答
0
投票

好吧,我终于意识到发生了什么事。我使用一个名为 AutoHotKeys 的程序。我经常使用的脚本之一是启动我的浏览器并转到特定的 URL1,暂停,打开 URL 2 并在那里登录。我对其进行了编程,以便 NumLocks 键成为调用脚本的热键。由于此脚本始终加载在系统内存中,因此在启动 DOS 批处理文件时,遇到这行代码时会调用 NumLocks 键:

set SendKeys=CScript //nologo //E:JScript "%~F0"

我只需要重新编写 AHK 脚本,以便使用不同的热键。

===========================================

但是,我仍然不明白波浪号 (~) 是如何在我的批处理文件中调用 NumLocks 键的。当我删除它时,问题不会发生。但是,从我的批处理文件中删除 ~ 会破坏代码并且不会产生所需的结果。

还是一头雾水!

© www.soinside.com 2019 - 2024. All rights reserved.