O que significa o sinal de porcentagem (% e %%) em um argumento de arquivo em lote?

11

Acho que estou perdendo alguma coisa porque não consigo descobrir o que isso significa.

Exemplo: para / D %% A em (*) do "\ 7za.exe" u -t7z -m9 = LZMA2 "%% A.7z" "%% A"

Essa linha deveria usar uma versão de linha de comando do 7zip para compactar pastas individuais, mas estou perplexo com o que %% A significa neste contexto.

    
por Jim Kieger 07.11.2013 / 17:58

3 respostas

11

O for comando precisa de um espaço reservado para que você possa passar variáveis para uso posterior na consulta, estamos dizendo que use o espaço reservado %A , a razão pela qual o código que você viu usa %%A é porque dentro de um arquivo de lote (que eu assumo é onde você encontrou isso) o % tem um significado especial, então você deve fazer isso duas vezes %% para que ele seja transformado em um único % a ser passado para o comando for

Para realmente separar o que o comando está fazendo, há duas partes no comando:

 for /D %%A in (*) do .....

O que esta parte diz é que para cada pasta na pasta atual, execute o seguinte comando substituindo %%A pelo nome da pasta atualmente em processamento.

..... "za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

O que esta parte diz é executar o comando "za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A" e substituir os dois %%A pelo registro atual que estamos processando.

    
por 07.11.2013 / 18:27
0

É uma variável.

Esse exemplo específico usa a opção de diretório de um loop FOR , percorrendo os diretórios e atribuindo-os a %% A .

Isso também não é um exemplo de linha de comando, mas um exemplo de arquivo em lote. Em arquivos em lote, você precisa usar %% A, enquanto na linha de comando, você só usaria% A.

    
por 07.11.2013 / 18:26
0

Em seu cenário, o %% A é um espaço reservado para o qual o loop "for" está interagindo (o que / indica os diretórios). Portanto, cada iteração do loop, %% A é um dos diretórios.

Você verá %% em vez de% no código do lote. Você verá% em vez de %% usado em seu prompt de comando.

Portanto, saiba que se você copiar um código de arquivo em lote em um prompt de comando e executá-lo com %% sendo usado, ocorrerá um erro e vice-versa.

    
por 07.11.2013 / 19:09