批处理文件 - 如何运行具有随机名称的 .exe 文件?

批处理文件 - 如何运行具有随机名称的 .exe 文件?

我试图让一个批处理文件在下载 .exe 文件后运行它。问题是,下载的文件的名称在下载时是随机的(从下载的网页上随机选择)。我无法猜测文件的名称,所以我希望批处理文件运行 .exe 文件,无论它是什么名称。

我希望它:

1:下载文件-它可以完美地完成。

2:然后不管名称如何都运行 .exe 文件 - 但这无法按预期工作。(错误;Windows 找不到“*.exe”。请确保您输入的名称正确,然后重试)- 我尝试了网络上提供的几种解决方案,但都不起作用。

3:删除文件-它完美地完成了。

这是我目前得到的:

echo Downloading file...
start "" https://TheWebPagesName.com
PING localhost -n 10 >NUL
echo Running file...
start "C:\Users\MyUsername\OneDrive\Dokumenter\Foldername\*.exe"
PING localhost -n 10 >NUL
echo Deleting File...
del "C:\Users\MyUsername\OneDrive\Dokumenter\Foldername\*.exe"
PING localhost -n 2 >NUL
echo Done!
PING localhost -n 6 >NUL
echo Exiting...
PING localhost -n 4 >NUL

有什么建议么?

答案1

您可以使用 forfiles 来实现这一点。

Forfiles 可以搜索文件,然后执行命令并将找到的文件用作变量,或者进行一些检查。Forfiles 支持文件掩码,并且鉴于您解释说 exefile 是文件夹中的唯一文件,因此可以使用 forfiles。

你的脚本看起来应该是这样的:

echo Downloading file...
start "" https://TheWebPagesName.com
PING localhost -n 10 >NUL
echo Running file...

:: comment out old row for easy reading    
:: start "C:\Users\MyUsername\OneDrive\Dokumenter\Foldername\*.exe"

:: insert new comamnd instead:
forfiles /p "C:\Users\MyUsername\OneDrive\Dokumenter\Foldername" /m *.exe /c "@file"

:: if you were not using executables, but would want to use start file.txt, you would use:
::forfiles /p "C:\Users\MyUsername\OneDrive\Dokumenter\Foldername" /m *.txt /c "cmd /c @file"

PING localhost -n 10 >NUL
echo Deleting File...
del "C:\Users\MyUsername\OneDrive\Dokumenter\Foldername\*.exe"
PING localhost -n 2 >NUL
echo Done!
PING localhost -n 6 >NUL
echo Exiting...
PING localhost -n 4 >NUL

答案2

使用aria2下载该文件。然后运行它。使用以下批处理脚本:

aria2c.exe --out="FileName.exe" --check-certificate=false --dir="C:\folder\path" "download_link"
"C:\folder\path\FileName.exe"
timeout /t 10
del "C:\folder\path\FileName.exe"
pause

相关内容