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

时间:2013-10-29 07:22:09

标签: batch-file cmd taskkill

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

2 个答案:

答案 0 :(得分:3)

Taskkill将消除其所有窗口的进程。您的工作簿可以在同一个excel实例下打开,因此,taskkill无法满足您的需求。

您可以使用AutoIt,nircmd,cmdow等工具来关闭所需的窗口,但是您必须处理要求保存工作簿的对话框的可能性。

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

@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);

答案 1 :(得分:1)

来自Taskkill的帮助(taskkill /?)

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