1

Я пытаюсь заставить командный файл запустить файл .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

Какие-либо предложения?

2 ответа2

0

Используйте 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
0

Вы можете сделать это, используя 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .