Excel 进程无法访问该文件,因为在使用start打开最大化窗口时,另一个进程错误正在使用该文件

Excel 进程无法访问该文件,因为在使用start打开最大化窗口时,另一个进程错误正在使用该文件,excel,batch-file,Excel,Batch File,我最近编写了一段代码来打开一个excel电子表格,其中包含我的家庭作业信息。电子表格完全由它自己包含在一个名为“家庭作业”的文件夹中。不幸的是,我到了一个地步,我想打开的电子表格最大化。我添加了一段代码,应该可以让它正常工作,它确实做到了,但是它向命令提示符输入了这个错误 The process cannot access the file because it is being used by another process 以下是我当前使用的所有代码: @echo off SET "sti

我最近编写了一段代码来打开一个excel电子表格,其中包含我的家庭作业信息。电子表格完全由它自己包含在一个名为“家庭作业”的文件夹中。不幸的是,我到了一个地步,我想打开的电子表格最大化。我添加了一段代码,应该可以让它正常工作,它确实做到了,但是它向命令提示符输入了这个错误

The process cannot access the file because it is being used by another process
以下是我当前使用的所有代码:

@echo off
SET "stime=10:00:00.00"
SET "etime=16:00:00.00"
tasklist /FI "IMAGENAME eq EXCEL.EXE" 2>NUL | find /I /N "EXCEL.EXE">NUL
if "%ERRORLEVEL%"=="0" (
set "running=true"
) else (
set "running=false"
)
:start
IF %time% GEQ %stime% (
    IF %time% LEQ %etime% (
        IF %running%==false (
            for %%i in (G:\Homework\*) do %%i
            GOTO start
        ) Else (
            GOTO start
            )
    ) ELSE (
        GOTO start
        )
) ELSE (
    GOTO start
    )

我发现我把事情搞砸了。进程没有检查ile是否已打开。我做了一些快速的更改,以便在必要时正确检查并打开文件

新代码:

@echo off
SET "stime=10:00:00.00"
SET "etime=16:00:00.00"
:start
tasklist /FI "IMAGENAME eq EXCEL.EXE" 2>NUL | find /I /N "EXCEL.EXE">NUL
if "%ERRORLEVEL%"=="0" (
set "running=true"
) else (
set "running=false"
)
IF %time% GEQ %stime% (
    IF %time% LEQ %etime% (
        IF %running%==false (
            for %%i in (G:\Homework\*) do start /MAX %%i
            GOTO start
        ) Else (
            GOTO start
            )
    ) ELSE (
        GOTO start
        )
) ELSE (
    GOTO start
    )
虽然这样做并不理想,但我想知道是否有更好的方法让代码工作。

也许是这样

@echo off
SET "stime=10:00:00.00"
SET "etime=16:00:00.00"
:start
tasklist /FI "IMAGENAME eq EXCEL.EXE" 2>NUL | find /I /N "EXCEL.EXE">NUL
if "%ERRORLEVEL%"=="0" (
   set "running=true"
) else (
   set "running=false"
)
IF %time% GEQ %stime% IF %time% LEQ %etime% IF %running%==false (
   for %%i in (G:\Homework\*) do start /MAX %%i
)
GOTO start

不会
:开始
如果%time%GEQ%stime%(
如果%time%LEQ%etime%(
如果%running%==false(
对于%%i-in(G:\家庭作业\*)执行%%i
转到开始
尝试进入无限循环打开文件,并在第二次崩溃(当文件已打开并正在使用时)?YowE3K,你说得很好,这一点实际上解决了这个问题。我忘记了不断检查文件是否正在运行,因此一旦它尝试完成循环,它就会出错。谢谢。很高兴我说了一些有帮助的话-我对“批处理文件”一无所知,所以我只是因为“excel”才看这个问题标记。您仍然有一个逻辑问题。您只是检查一个程序是否正在运行。而不是检查该程序是否打开了一个文件。Squashman,您是否可以建议一种检查该信息的方法,我很熟悉如何处理批处理。