Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在命令提示符下使用Taskkill(批处理)_Batch File_Cmd_Taskkill - Fatal编程技术网

Batch file 在命令提示符下使用Taskkill(批处理)

Batch file 在命令提示符下使用Taskkill(批处理),batch-file,cmd,taskkill,Batch File,Cmd,Taskkill,我有4个excel文件(city.xls、rule.xls、adv.xls和maping.xls),所有excel文件都在其中打开。如何在批处理/CMD编程中使用taskkill强制仅关闭一个文件(例如:maping.xls)?来自taskkill的帮助(taskkill/?) TASKKILL/F/FI“PID ge 1000”/FI“WINDOWTITLE ne untitle*”TASKKILL将消除一个进程及其所有窗口。您的工作簿可以在同一个excel实例下全部打开,因此taskkill

我有4个excel文件(city.xls、rule.xls、adv.xls和maping.xls),所有excel文件都在其中打开。如何在批处理/CMD编程中使用taskkill强制仅关闭一个文件(例如:maping.xls)?

来自taskkill的帮助(taskkill/?)


TASKKILL/F/FI“PID ge 1000”/FI“WINDOWTITLE ne untitle*”

TASKKILL将消除一个进程及其所有窗口。您的工作簿可以在同一个excel实例下全部打开,因此taskkill无法执行您需要的操作

您可以使用一些工具,如AutoIt、nircmd、cmdow等。。。只需关闭您需要的窗口,但您必须处理对话框请求保存工作簿的可能性

这是一个批处理文件(只需另存为.cmd并更改xlsx文件),其中包含一个脚本部分,用于搜索工作簿并在没有对话框的情况下关闭它。没有bulleproof,只在打开工作簿的用户的同一会话下工作,但只是一个开始示例

@if (@This==@IsBatch) @then
@echo off
rem **** batch zone *********************************************************

    rem call javascript part of batch file
    cscript //nologo //e:Javascript "%~dpnx0" /workbook:"j:\wherever\myWorkbook.xlsx"

    rem End of batch area. Ensure batch ends execution before reaching
    rem javascript zone
    exit /b

@end
// **** Javascript zone *****************************************************

    if (!WScript.Arguments.Named.Exists('workbook')) {
        // if no workbook argument, no work to do
        WScript.Quit(1);
    };

    // retrieve workbook name
    var workbook = WScript.Arguments.Named.Item('workbook');

    var exitCode = 0;
    try {
        // search for workbook application
        var wb = GetObject(workbook);

        // get handle to application containing workbook
        var app = wb.Application;

        // close workbook. Ask for save = false
        wb.Close( false );

        // if no more workbooks open in application, close it
        if (app.Workbooks.Count == 0){ 
            app.Quit();
        };

    } catch(e){
        // some kind of problem with objects
        // WScript.Echo( e.description );
        exitCode = 2;
    };
    app =null;
    wb  =null;
    WScript.Quit(exitCode);

如果所有工作簿都在可执行文件的同一实例中打开,则所有工作簿都将关闭,因为可执行文件已关闭
“PID ge 1000”
id在此可能不需要。可能应该使用窗口标题
eq
。+1任何方式。我认为每个工作簿都处于单独的过程中,但我喜欢此脚本。+1刚刚用excel 2007测试过,不知道其他版本。如果双击excel文件,将启动一个进程。如果双击另一个excel文件,它将在同一进程下的新窗口中打开。现在,如果您直接从运行命令或windows菜单调用excel,将创建一个新进程。因此,这取决于用户以及如何打开工作簿。