Crear un archivo de bate para descargar un programa y no puedo encontrar el problema

Dice que la url está equivocada pero me parece bien. Estoy tratando de descargar un archivo del lanzamiento de Internet el programa, después de que el proceso termine para eliminar el programa. Cualquier ayuda sería genial

proceso será

start exe --- confía para crear el simple downloader --- agregar parámetros mediante el archivo de bate --- lanzar el archivo ----- espera que el proceso termine ----- eliminar los archivos descargados. Aún tengo que añadir el proceso de espera y eliminar comandos

@if (@X)==(@Y) @end /****** jscript comment ******

@echo off
::::::::::::::::::::::::::::::::::::
:::       compile the script    ::::
::::::::::::::::::::::::::::::::::::
setlocal
if exist simpledownloader.exe goto :skip_compilation

set "frm=%SystemRoot%\Microsoft.NET\Framework\"
:: searching the latest installed .net framework
for /f "tokens=* delims=" %%v in ('dir /b /s /a:d /o:-n "%SystemRoot%\Microsoft.NET\Framework\v*"') do (
    if exist "%%v\jsc.exe" (
        rem :: the javascript.net compiler
        set "jsc=%%~dpsnfxv\jsc.exe"
        goto :break_loop
    )
)
echo jsc.exe not found && exit /b 0
:break_loop


call %jsc% /nologo /out:"simpledownloader.exe" "%~dpsfnx0"
::::::::::::::::::::::::::::::::::::
:::       end of compilation    ::::
::::::::::::::::::::::::::::::::::::
:skip_compilation

:: download the file


::
::::::::::
:: simpledownloader.exe "%%~1" "%%~2"

simpledownloader.exe  "https://download.splashtop.com/sos/SplashtopSOS.exe" sos.exe
sos.exe

:: del /q simpledownloader.exe
::
::::::::
::

exit /b 0


****** end of jscript comment ******/

import System;
var arguments:String[] = Environment.GetCommandLineArgs();
var webClient:System.Net.WebClient = new System.Net.WebClient();
print("Downloading " + arguments[1] + " to " + arguments[2]);
try {
    webClient.DownloadFile(arguments[1], arguments[2]);
} catch (e) {

        Console.BackgroundColor = ConsoleColor.Green;
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine("\n\nProblem with downloading " + arguments[1] + " to " + arguments[2] + "Check if the internet address is valid");
        Console.ResetColor();
        Environment.Exit(5);
}

Pregunta hecha hace 3 años, 4 meses, 28 días - Por compilerczar


3 Respuestas:

  • Creo que encontré algo para ti que hice algunos ajustes para ti. ¡Feliz guión!

     @echo off
     IF EXIST sos.exe goto delete 
     IF NOT EXIST sos.exe goto skip
     :delete
     echo delete
     del /f sos.exe 
     timeout 5
     :skip
     echo skip
     rem :: the first argument is the script name as it will be used for proper help message
     cscript //E:JScript //nologo "%~f0" "%~nx0" %*
     start sos.exe
     exit /b %errorlevel%
     
     
     
    @if (@X)==(@Y) @end JScript comment */
    
    // global variables and constants
    var ARGS = WScript.Arguments;
    var scriptName=ARGS.Item(0);
    
    var url="";
    var saveTo="";
    
    var user=0;
    var pass=0;
    
    var proxy=0;
    var bypass="";
    var proxy_user=0;
    var proxy_pass=0;
    var certificate=0;
    var force=true;
    
    //ActiveX objects
    //Use the right version of MSXML
    /*var progIDs = [ 'Msxml2.DOMDocument.6.0', 'Msxml2.DOMDocument.5.0', 'Msxml2.DOMDocument.4.0', 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' ]
    for (var i = 0; i < progIDs.length; i++) {
     try {
         var XMLHTTPObj = new ActiveXObject(progIDs[i]);
     }catch (ex) {       
     }
    }
    
    if typeof  XMLHTTPObj === 'undefined'{
     WScript.Echo ("You are using too ancient windows or you have no installed IE");
     WScript.Quit(1);
    }*/
    
    var XMLHTTPObj = new ActiveXObject("MSXML2.XMLHTTP");
    var FileSystemObj = new ActiveXObject("Scripting.FileSystemObject");
    var AdoDBObj = new ActiveXObject("ADODB.Stream");
    
    
    function existsItem(path){
     return FileSystemObj.FolderExists(path)||FileSystemObj.FileExists(path);
    }
    
    stripTrailingSlash = function(path){
     while (path.substr(path.length - 1,path.length) == '\\') {
         path=path.substr(0, path.length - 1);
     }
     return path;
    }
    
    function deleteItem(path){
     if (FileSystemObj.FileExists(path)){
         FileSystemObj.DeleteFile(path);
         return true;
     } else if (FileSystemObj.FolderExists(path) ) {
         FileSystemObj.DeleteFolder(stripTrailingSlash(path));
         return true;
     } else {
         return false;
     }
    }
    
    function writeFile(fileName,data ){
     AdoDBObj.Type = 1;       
     AdoDBObj.Open();
     AdoDBObj.Position=0;
     AdoDBObj.Write(data);
     AdoDBObj.SaveToFile(fileName,2);
     AdoDBObj.Close();   
    }
    
    function download( url,file){
     if (force && existsItem(file)){
         if(!deleteItem(file)){
             WScript.Echo("Unable to delete "+ file);
             WScript.Quit(8);
         }
     }else if (existsItem(file)){
         WScript.Echo("Item " + file + " already exist");
         WScript.Quit(9);
     }
     
    
     
     if (proxy!=0 && bypass !="") {
         //https://msdn.microsoft.com/en-us/library/ms760236(v=vs.85).aspx
         XMLHTTPObj.setProxy(SXH_PROXY_SET_DIRECT,proxy,bypass);
     } else if (proxy!=0) {
         XMLHTTPObj.setProxy(SXH_PROXY_SET_DIRECT,proxy,"");
     }
     
    
     
     if (proxy_user!=0 && proxy_pass!=0 ) {
         //https://msdn.microsoft.com/en-us/library/ms763680(v=vs.85).aspx
         XMLHTTPObj.setProxyCredentials(proxy_user,proxy_pass);
     }
     
     if(certificate!=0) {
         //https://msdn.microsoft.com/en-us/library/ms763811(v=vs.85).aspx
         WinHTTPObj.setOption(3,certificate);
     }
     
     if (user!=0 && pass!=0){
         //https://msdn.microsoft.com/en-us/library/ms757849(v=vs.85).aspx
          XMLHTTPObj.Open('GET',url,false,user,pass);
     } else {
         XMLHTTPObj.Open('GET',url,false);
     }
     
     
     
     XMLHTTPObj.Send();
     var status=XMLHTTPObj.Status;
     
     switch(status){
         case 200:
             WScript.Echo("Status: 200 OK");
             break;
         case 401:
             WScript.Echo("Status: 401 Unauthorized");
             WScript.Echo("Check if correct user and password were provided");
             WScript.Quit(401);
             break;
         case 407:
             WScript.Echo("Status:407 Proxy Authentication Required");
             WScript.Echo("Check if correct proxy user and password were provided");
             WScript.Quit(407);
             break;
         default:
             WScript.Echo("Status: "+status);
             WScript.Echo("Try to help yourself -> https://en.wikipedia.org/wiki/List_of_HTTP_status_codes");
             WScript.Quit(status);
     }
     writeFile(file,XMLHTTPObj.ResponseBody);
    }
    
    function main(){
     url="https://download.splashtop.com/sos/SplashtopSOS.exe"
     saveTo="sos.exe";
    
     download(url,saveTo);
    }
    

    Respondida el Dec 17, 2020 a las 15:15 - por codesculptor

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás experimentando puede deberse a que estás intentando descargar un archivo de un protocolo "https" y el Simple Downloader que has creado en tu script podría no ser compatible con ese protocolo.

    Para solucionar este problema, en lugar de utilizar el protocolo "https" en la URL de descarga, intenta usar una URL que utilice el protocolo "http". Como ejemplo, en lugar de "https://download.splashtop.com/sos/SplashtopSOS.exe", intenta utilizar "http://download.splashtop.com/sos/SplashtopSOS.exe".

    Adicionalmente, asegúrate de que la URL de descarga es válida y que apuntas correctamente al archivo que deseas descargar.

    Una vez que hayas realizado estos cambios, prueba nuevamente ejecutar tu script de bate para descargar el programa y verifica si el problema se ha resuelto.

    Respondida el Dec 18, 2020 a las 15:17 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • He revisado tu código y he detectado un posible problema con la URL de descarga. En el código, estás intentando descargar un archivo desde la siguiente URL:

    
    "https://download.splashtop.com/sos/SplashtopSOS.exe"
    

    Sin embargo, en tu descripción, mencionas que la URL es "https://download.splashtop.com/SplashtopSOS.exe". Hay una diferencia en la ruta del archivo después de ".com/".

    Prueba a cambiar la URL en tu código a:

    
    "https://download.splashtop.com/SplashtopSOS.exe"
    

    y verifica si eso resuelve el problema. Asegúrate de que la URL sea correcta y que el archivo esté disponible para su descarga en esa ubicación.

    Respondida el Dec 18, 2020 a las 15:27 - por Gemini

    Votos positivos: 0 | Votos negativos: 0