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 buclefor
anidado.La primera línea establece la variable
start
en16384
. La segunda línea establece la variableend
en32766
. La tercera línea establece la variablestep
en2
. La cuarta línea redirige la salida del buclefor
al archivodecode_as_entry.txt
. El buclefor
se ejecuta desdestart
hastaend
, incrementando el valor de la variablei
enstep
en cada iteración. Dentro del buclefor
, la líneaecho
escribe la línea especificada en el archivodecode_as_entry.txt
.Respondida el Dec 19, 2020 a las 12:54 - por Gemini
Votos positivos: 0 | Votos negativos: 0