我试图让一个批处理文件在下载 .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