0

我有以下批处理文件,它基本上从共享文件夹中复制另一个 bat 文件,选择此 bat 文件并使用 sendkeys 选项发送 ENTER 键。

在 Windows 7 上一切正常,但是,一旦我尝试在 Windows 10 上使用相同的功能,它就无法正常工作。

它确实将文件复制到特定文件夹中,它会使用所选文件打开此文件夹,但不会启动文件本身。在我的情况下,使用 sendkeys 功能启动文件很重要。

我假设问题是由于没有保持打开的文件夹处于焦点,sendkeys 确实发送了 ENTER 按钮,但是由于所选文件夹不在 Windows 焦点批处理文件中,因此不会自动启动。

有没有可能将窗口集中在打开的文件夹上?

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

@echo off

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

xcopy "\\fs\FIle Share\SA Support\ZverTools\Win10UninstallUnnecessaryApps.bat" "%USERPROFILE%" /y

PING localhost -n 2 >NUL

set targetfilepath=%USERPROFILE%\Win10UninstallUnnecessaryApps.bat   
%SystemRoot%\explorer.exe /select, "%TARGETFILEPATH%"

PING localhost -n 1 >NUL

%SendKeys% "{ENTER}"

goto :EOF

@end

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

1 回答 1

0

所以,问题与 ping 有关,一秒还不够,所以我将它增加到四秒,现在它可以正常工作了。

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

@echo off

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

xcopy "\\fs\FIle Share\SA Support\ZverTools\Win10UninstallUnnecessaryApps.bat" "%USERPROFILE%" /y

TIMEOUT /T 2 /NOBREAK

set targetfilepath=%USERPROFILE%\Win10UninstallUnnecessaryApps.bat   
explorer.exe /select, "%TARGETFILEPATH%"

TIMEOUT /T 4 /NOBREAK

%SendKeys% "{ENTER}"

goto :EOF

@end

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

我也换了ping

PING localhost -n 1 >NUL

与 temeout

**TIMEOUT /T 4 /NOBREAK**

(根据 Compo 的建议)

于 2020-01-05T10:42:23.033 回答