crear un archivo usando ventanas CMD y llenarlo con una línea repetida pero diferente valor

Me gustaría actualizar el archivo decodificación de hilo con toda la gama RTP usando un comando CMD o un script Batch.

El archivo debe contener valores como este:

decode_as_entry: udp.port,16384,(none),RTP
decode_as_entry: udp.port,16386,(none),RTP
decode_as_entry: udp.port,16388,(none),RTP
.
.
.
decode_as_entry: udp.port,32766,(none),RTP

Como puede ver, es engorroso añadir las líneas para toda la gama RTP manualmente.

Así que el script para lotes debe crear un archivo de texto, y añadir estas líneas uno por uno hasta el valor 32766 es alcanzado.

Entiendo la lógica del código, que debe contener un FOR bucle (para la iteración), y IF declaración (para romper el bucle hasta 32766 es alcanzado), pero no soy capaz de construir el archivo por lotes con éxito ya que me falta el conocimiento.

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


3 Respuestas:

  • El comentario de Compo utilizando FOR /L funciona. Otra forma de hacerlo utilizando PowerShell de un script de archivo .bat cmd.exe sería:

    powershell.exe -NoLogo -NoProfile -Command ^
        "(16384..32766).Where({$_ %% 2 -eq 0}) |" ^
        "    ForEach-Object { """decode_as_entry: udp.port,$($_.ToString()),(none),RTP""" } |" ^
        "    Out-File -FilePath '.\test.txt' -Encoding ASCII"
    

    Por supuesto, es más fácil si usted podría ejecutar un Poder Consola Shell o archivo de script .ps1.

    (16384..32766).Where({$_ % 2 -eq 0}) |
        ForEach-Object { "decode_as_entry: udp.port,$($_.ToString()),(none),RTP" } |
        Out-File -FilePath '.\test.txt' -Encoding ASCII
    

    Respondida el Dec 18, 2020 a las 12:40 - por bytebard66b1

    Votos positivos: 0 | Votos negativos: 0

  • Para lograr esto, puedes crear un script de batch que genere el archivo con las líneas deseada. Aquí te dejo un ejemplo de cómo puedes hacerlo:

    • Abre el Bloc de notas y copia el siguiente código:
    batch
    @echo off
    setlocal enabledelayedexpansion
    
    set FILE=archivo_decodificacion.txt
    
    echo Eliminando archivo existente si lo hay
    if exist %FILE% del %FILE%
    
    echo Creando nuevo archivo
    for /L %%i in (16384, 1, 32766) do (
        echo decode_as_entry: udp.port,%%i,(none),RTP >> %FILE%
    )
    
    echo Archivo creado exitosamente
    pause
    
    • Guarda el archivo con la extensión ".bat", por ejemplo "crear_archivo.bat".
    • Ejecuta el archivo ".bat" y se creará el archivo de texto "archivo_decodificacion.txt" con las líneas deseadas.

    Este script utiliza un bucle for para generar las líneas con valores incrementales desde 16384 hasta 32766 y las añade al archivo especificado. También verifica si el archivo ya existe y lo elimina antes de crear uno nuevo.

    Una vez ejecutado el script, deberías poder encontrar el archivo "archivo_decodificacion.txt" en la misma ubicación donde se encuentra el script ".bat" con las líneas generadas correctamente.

    Respondida el Dec 19, 2020 a las 12:40 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • 
    @echo off
    set /a "start=16384"
    set /a "end=32766"
    set /a "step=2"
    
    > decode_as_entry.txt (
        for /L %%i in (%start%,%step%,%end%) do (
            echo decode_as_entry: udp.port,%%i,(none),RTP
        )
    )
    

    Este script por lotes creará un archivo llamado decode_as_entry.txt y lo llenará con las líneas especificadas, utilizando un bucle for anidado.

    La primera línea establece la variable start en 16384. La segunda línea establece la variable end en 32766. La tercera línea establece la variable step en 2. La cuarta línea redirige la salida del bucle for al archivo decode_as_entry.txt. El bucle for se ejecuta desde start hasta end, incrementando el valor de la variable i en step en cada iteración. Dentro del bucle for, la línea echo escribe la línea especificada en el archivo decode_as_entry.txt.

    Respondida el Dec 19, 2020 a las 12:54 - por Gemini

    Votos positivos: 0 | Votos negativos: 0