Batch file 如何使用批处理命令关闭特定文件

Batch file 如何使用批处理命令关闭特定文件,batch-file,automation,batch-processing,Batch File,Automation,Batch Processing,我正在尝试创建一个批处理文件以打开Access文件。(按enter键),然后再次关闭Access文件。我完全不知道批处理文件,我唯一能做的就是打开文件部分 Start "" "W:\Motorenfabriek\World Class Manufacturing\Verspaning\Area 1\PROVO Applicatie\Database tabellen\TblStoringDienst.accdb" 当我运行此代码时,应用程序将打开。问题是在组织内部,您必须先按enter键,然

我正在尝试创建一个批处理文件以打开Access文件。(按enter键),然后再次关闭Access文件。我完全不知道批处理文件,我唯一能做的就是打开文件部分

Start ""  "W:\Motorenfabriek\World Class Manufacturing\Verspaning\Area 1\PROVO Applicatie\Database tabellen\TblStoringDienst.accdb"
当我运行此代码时,应用程序将打开。问题是在组织内部,您必须先按enter键,然后才能使用Access文件

我知道以前有人问过这个问题,但我还没有看到任何有效的答案

我尝试使用beneith代码再次关闭应用程序,但这不起作用。应用程序保持打开状态:

taskill /f /im "W:\Motorenfabriek\World Class Manufacturing\Verspaning\Area 1\PROVO Applicatie\Database tabellen\TblStoringDienst.accdb"

我只希望关闭此文件,而不是关闭所有Access实例,因为还有另一个实例正在运行。

有几种方法可以终止任务,其中一种更简单的方法是按窗口标题终止任务。例如,我打开了一个名为
test.txt
的文件,该文件在
notepad
中打开。标题显示为
test.txt-Notepad

然后我就可以这么做了

taskkill /F /FI "WindowTitle eq test.txt - Notepad" /T
窗口标题也是如此,例如:

my_devices.csv - Excel
My Document1 - Word
TblStoringDienst.accdb - Access
Hex edit TblStoringDienst.accdb
等等

至于您的发送击键选项,纯批处理无法做到这一点,您必须执行wscript和批处理组合。当命令启动时,这将在2个sconds超时后向屏幕发送enter。它未经测试,因为我没有您的环境,所以可能需要进行调整

@if (@CodeSection == @Batch) @then

@echo off
set SendKeys=CScript //nologo //E:JScript "%~F0"
        Start ""  "W:\Motorenfabriek\World Class Manufacturing\Verspaning\Area 1\PROVO Applicatie\Database tabellen\TblStoringDienst.accdb"
        timeout /t 2 /nobreak >nul
        %SendKeys% {ENTER}

@end

var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));

有几种方法可以终止任务,其中一种更简单的方法是通过窗口标题终止任务。例如,我打开了一个名为
test.txt
的文件,该文件在
notepad
中打开。标题显示为
test.txt-Notepad

然后我就可以这么做了

taskkill /F /FI "WindowTitle eq test.txt - Notepad" /T
窗口标题也是如此,例如:

my_devices.csv - Excel
My Document1 - Word
TblStoringDienst.accdb - Access
Hex edit TblStoringDienst.accdb
等等

至于您的发送击键选项,纯批处理无法做到这一点,您必须执行wscript和批处理组合。当命令启动时,这将在2个sconds超时后向屏幕发送enter。它未经测试,因为我没有您的环境,所以可能需要进行调整

@if (@CodeSection == @Batch) @then

@echo off
set SendKeys=CScript //nologo //E:JScript "%~F0"
        Start ""  "W:\Motorenfabriek\World Class Manufacturing\Verspaning\Area 1\PROVO Applicatie\Database tabellen\TblStoringDienst.accdb"
        timeout /t 2 /nobreak >nul
        %SendKeys% {ENTER}

@end

var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));

我找到了一种摆脱messagebox的方法,因此不再需要自动输入。我仍然想知道如何使用批处理代码退出特定文件。您尝试了其他哪种解决方案?这在什么方面不适用于你的案件?@HåkenLid I更新了这个问题。无法在注释中获取代码。很好。更新问题是添加详细信息的正确方法。我找到了一种摆脱messagebox的方法,因此不再需要自动输入。我仍然想知道如何使用批处理代码退出特定文件。您尝试了其他哪种解决方案?这在什么方面不适用于你的案件?@HåkenLid I更新了这个问题。无法在注释中获取代码。很好。更新问题是添加详细信息的正确方法。谢谢,自动“输入”的代码运行良好。我仍然无法让taskkill工作,但这可能是我的错。当我把taskkill放在enter的代码后面时,enter代码就不再工作了。@DennisvdEijnde可能在
if
语句之前的一开始就把taskkill放在te中。谢谢,自动“enter”的代码工作得很好。我仍然无法让taskkill工作,但这可能是我的错。当我将taskkill放在enter的代码后面时,enter代码将不再起作用。@DennisvdEijnde可能会在
if
语句之前的一开始就将taskkill放在te中。