usa variável numérica para criar um nome de arquivo

2

Eu tenho um script que não 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%
        )

Eu preciso do número de 1 a 31 gerado em um loop para ser uma variável de string que poderia ser usada para criar um nome de arquivo. No meu caso, há um problema em usar o parâmetro %% C ou a variável numérica "num" para essa finalidade. Eu tentei definir uma variável de seqüência de caracteres "dia", que mantém o número de interesse, mas ainda não funciona eu não sei porque. Por favor, ajude a consertá-lo.

    
por Anna 09.05.2012 / 05:58

2 respostas

0

Não tenho certeza se entendi bem o que você realmente quer fazer, mas aqui está o código que criará arquivos vazios contendo o número solicitado no nome. Se não for a resposta que procura, por favor, seja mais específico com o seu pedido.

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

NOTA: Por favor, certifique-se de que existe um diretório "Pasta".

    
por 09.05.2012 / 12:45
0

Acho que você tornou o script muito complicado. Tente isto:

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

Algumas notas:

O lote trata todas as variáveis como strings, exceto quando se usa set / a .

O for /L fará a contagem para você, sem necessidade de adição extra.

É fácil confundir a sintaxe de porcentagem dupla ( %%C ) necessária para o loop for com a sintaxe de porcentagem única ( %1 ) usada para acessar os argumentos passados para o script a partir da linha de comando. Apenas saiba que os argumentos da linha de comando somente usam a sintaxe de porcentagem única.

Não sei ao certo o que o segundo for loop deveria estar fazendo. Você precisava de outra variável de loop lá ( %%D ) para funcionar. Eu suspeito que você esteja tentando produzir as linhas do arquivo Day_1.txt, Day_2.txt, etc., mas eu não acho que isso vai funcionar da maneira que está atualmente escrita, especialmente se você precisar criar o arquivo primeiro.

Editar em resposta ao comentário anexado à resposta de evianton:

Você não especificou que precisava de dois dígitos na sua pergunta original. O código abaixo (modificado de evianton) deve resolver esse 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"  
)
    
por 10.05.2012 / 07:15

Tags