ダウンロードした後、バッチファイルに.exeファイルを実行させようとしています。問題は、ダウンロードされたファイルの名前がダウンロード時にランダム化されることです(ダウンロード元のWebページからランダム化されます)。ファイルの名前を推測する方法がないので、名前に関係なく、バッチファイルで.exeファイルを実行する必要があります。
私はそれが欲しい:
1:ファイルをダウンロードします-これは完全に実行されます。
2:次に、名前に関係なく.exeファイルを実行します。これは意図したとおりに機能しません。 (エラー; Windowsは '* .exe'を見つけることができません。名前を正しく入力したことを確認してから、再試行してください)-質問のマッシュアップからWebで提供されているいくつかの解決策を試しましたが、何も機能しません。
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
助言がありますか?
これは、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
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