usar una variable numérica para crear un nombre de archivo

usar una variable numérica para crear un nombre de archivo

Tengo un script que no funciona:

set /a num=0
for /L %%C in (1,1,31) do (
        set /a num+=1
        set day=%num%
        for /r %%1 in ("Folder\Day_%num%.txt") do echo %num%
        )

Necesito que el número del 1 al 31 generado en un bucle sea una variable de cadena que pueda usarse para crear un nombre de archivo. En mi caso existe un problema al utilizar tanto el parámetro %%C como la variable numérica "num" para este fin. Intenté establecer una variable de cadena "día" que mantiene el número de interés pero todavía no funciona, no sé por qué. Por favor ayuda a solucionarlo.

Respuesta1

No estoy seguro de haber entendido bien lo que realmente quiere hacer, pero aquí hay un código que creará archivos vacíos que contienen el número solicitado en el nombre. Si no es la respuesta que busca, sea más específico con su solicitud.

FOR /L %%C IN (1,1,31) DO (
    ECHO. >> "Folder\Day_%%C.txt"
)

NOTA: asegúrese de que exista el directorio "Carpeta".

Respuesta2

Creo que has complicado demasiado el guión. Prueba esto:

for /L %%C in (1,1,31) do (
  for /r %1 %%D in ("Folder\Day_%%C.txt") do echo %%D
)

Un par de notas:

Batch trata todas las variables como cadenas excepto cuando se usaconjunto /a.

El for /Lcontará por usted, no es necesario realizar sumas adicionales.

Es fácil confundir la sintaxis de doble porcentaje ( %%C) requerida para el forbucle con la sintaxis de porcentaje simple ( %1) utilizada para acceder a los argumentos pasados ​​al script desde la línea de comando. Sólo tenga en cuenta que los argumentos de la línea de comandosoloUtilice la sintaxis de porcentaje único.

No estoy seguro de qué forse supone que debe hacer el segundo ciclo. Necesitaba otra variable de bucle allí ( %%D) para que funcionara. Sospecho que estás intentando generar las líneas del archivo Day_1.txt, Day_2.txt, etc., pero no creo que funcione como está escrito actualmente, especialmente si necesitas crear el archivo primero.

Edite en respuesta al comentario adjunto a la respuesta de evianton:

No especificó que necesitaba días de 2 dígitos en su pregunta original. El siguiente código (modificado de evianton) debería resolver ese problema.

@echo off
setlocal enabledelayedexpansion
for /l %%C in (1,1,31) do (  
  set num=%%C  
  if %%C lss 10 set num=0%%C  
  echo. >> "Folder\Day_!num!.txt"  
)

información relacionada