Double Commander

2.12. Variáveis nos parâmetros

Conteúdo

1. Introdução rápida
2. Variáveis de parâmetros básicos
3. Variáveis de sufixo básico
4. Sufixos numerados
5. Especificando prefixo e sufixo para cada arquivo
6. Caminhos do painel
7. Se o resultado deve estar entre aspas
8. Se o caminho deve terminar com um delimitador
9. Lista de arquivos
10. Sufixos para lista de arquivos
11. Combinação de sufixos de lista de arquivos
12. Execução no terminal
13. Interação
14. Outras variáveis
15. Tabela de resumo de todas as variáveis
16. Variáveis de ambiente

1. Introdução rápida

As variáveis nos ajudarão ao configurar botões da barra de ferramentas ou ao definir ações de associações de arquivos e teclas de atalho.

Basicamente, usaremos essas variáveis quando precisarmos fornecer argumentos a um comando com base nos arquivos atualmente selecionados, no diretório em que estamos e outras informações contextuais relacionadas ao que é exibido nos painéis.

Aqui está um exemplo simples. Um usuário configurou um botão para iniciar o IrfanView e usa a variável %p como parâmetro.

Exemplo de variável

Quando o usuário clicar naquele botão, ele iniciará o IrfanView e substituirá a variável %p pelo arquivo atualmente selecionado no painel ativo.

É isso que significam as variáveis descritas nesta página.

Como você verá, a maioria das variáveis começa com um sinal de porcentagem %.

Nota: Variáveis e sufixos diferenciam maiúsculas de minúsculas!

2. Variáveis de parâmetros básicos

Estas são as variáveis básicas que podem ser usadas, relacionadas à seleção atual.

Por padrão, valores de variáveis que contenham espaços e/ou caracteres especiais serão escapados automaticamente: cercados por aspas duplas no Windows, ou precedidos por "\" para caracteres especiais em sistemas do tipo Unix. Se você precisar do resultado sem aspas, veja a seção Se o resultado deve estar entre aspas.

Para cada variável, o exemplo assume que estamos apontando para o arquivo C:\Users\UserName\Desktop\comentario.png.

Variáveis básicas
VariávelSignificado
%p
Nome completo do arquivo, caminho + nome do arquivo
Exemplo: %p = "C:\Users\UserName\Desktop\comentario.png"
%f
Apenas o nome do arquivo, incluindo a extensão
Exemplo: %f = "comentario.png"
%d
Apenas o caminho, sem o delimitador de diretório final
Exemplo: %d = "C:\Users\UserName\Desktop"
%z
O nome do último diretório no caminho
Exemplo: %z = "Desktop"
%o
Apenas o nome do arquivo, sem a extensão
Exemplo: %o = "comentario"
%e
Apenas a extensão, sem o ponto
Exemplo: %e = "png"
%v
Nome do arquivo relativo ao diretório ativo atual
Aplicável, por exemplo, quando chamamos o comando interno cm_FlatView.
Se em modo de visão plana a partir do diretório "C:\Users\UserName", %v resultaria em "Desktop\comentario.png"

A variável %a pode ser usada em sistemas de arquivos virtuais (arquivos compactados abertos ou plugins de sistema de arquivos): a string inclui o caminho para o sistema de arquivos virtual (nome completo do arquivo compactado ou nome do plugin WFX com "wfx://") e o nome completo do arquivo relativo à raiz do sistema de arquivos virtual.

Se vários arquivos forem selecionados, essas variáveis retornarão os valores para todos os projetos selecionados em uma linha. Para obter sempre o valor do arquivo sob o cursor, podemos usar o sufixo numerado 0.

3. Variáveis de sufixo básico

Podemos adicionar outra letra após a letra da variável mencionada acima para especificar com mais precisão o que queremos usar.

Para cada variável, o exemplo assume:
O painel esquerdo aponta para o arquivo "C:\PastaEsquerda\Arquivo.lft"
O painel direito aponta para "C:\PastaDireita\Arquivo.rgh"
O painel ativo atual é o painel direito.

Sufixos básicos
SufixoSignificado
s
Painel de origem ou ativo (esteja ele no lado esquerdo ou direito)
Exemplo: %ps = "C:\PastaDireita\Arquivo.rgh"
t
Painel de destino ou inativo (esteja ele no lado esquerdo ou direito)
Exemplo: %pt = "C:\PastaEsquerda\Arquivo.lft"
l
Painel do lado esquerdo
Exemplo: %pl = "C:\PastaEsquerda\Arquivo.lft"
r
Painel do lado direito
Exemplo: %pr = "C:\PastaDireita\Arquivo.rgh"
p
Ambos os painéis, o ativo primeiro, depois um espaço e em seguida o inativo
Exemplo: %pp = "C:\PastaDireita\Arquivo.rgh" "C:\PastaEsquerda\Arquivo.lft"
b
Ambos os painéis, o esquerdo primeiro, depois um espaço e em seguida o direito
Exemplo: %pb = "C:\PastaEsquerda\Arquivo.lft" "C:\PastaDireita\Arquivo.rgh"

4. Sufixos numerados

Se tivermos vários arquivos selecionados no momento, podemos adicionar um sufixo numerado aos sufixos mencionados anteriormente para especificar exatamente qual arquivo queremos usar.

Para cada elemento na tabela, assumimos que o painel de origem aponta para "C:\temp\" e selecionamos vinte arquivos, de "ArquivoA.txt", "ArquivoB.txt" etc. até "ArquivoZ.txt".

Sufixos numerados
SufixoSignificado
0
O arquivo sob o cursor
Exemplo: %ps0 = "C:\temp\ArquivoY.txt"
1
O primeiro arquivo selecionado
Exemplo: %ps1 = "C:\temp\ArquivoA.txt"
2
O segundo arquivo selecionado
Exemplo: %ps2 = "C:\temp\ArquivoB.txt"
3
O terceiro arquivo selecionado
Exemplo: %ps3 = "C:\temp\ArquivoC.txt"
21
O vigésimo primeiro arquivo selecionado
Exemplo: %ps21 = "C:\temp\ArquivoU.txt"

5. Especificando prefixo e sufixo para cada arquivo

Às vezes, quando passamos argumentos a um executável, precisamos incluir algo antes do nome do arquivo.

Às vezes queremos incluir algo antes e depois do nome do arquivo.

Esteja ciente de que o seguinte será aplicado a cada item selecionado.

Para cada elemento na tabela, assumimos que estamos atualmente em "C:\Windows\Fonts" com três arquivos selecionados, "courrier.ttf", "fixedsys.ttf" e "terminal.ttf".

Prefixos e sufixos
Prefixo e SufixoSignificado
{}
Um par de chaves fará com que o texto entre as chaves seja adicionado antes de cada item selecionado
Exemplo: %fs{+} = "+courrier.ttf" "+fixedsys.ttf" "+terminal.ttf"
{}{}
Dois pares de chaves farão com que o texto entre as chaves seja colocado antes e depois de cada item selecionado, respectivamente.
Exemplo: %fs{[}{]} = "[courrier.ttf]" "[fixedsys.ttf]" "[terminal.ttf]"

6. Caminhos do painel

Anteriormente, indicamos as variáveis relacionadas ao item atualmente selecionado dentro de um painel.

Mas também podemos usar a variável %D para dizer que queremos referenciar o nome do diretório do painel.

Para essa variável, podemos adicionar as mesmas letras de sufixo de antes para especificar exatamente qual painel queremos referenciar.

Para cada variável, o exemplo assume:
O painel esquerdo está em "C:\Referencia"
O painel direito aponta para "E:\Trabalho"
O painel ativo atual é o painel direito.

Caminhos do painel
VariávelSignificado
%D
Usado sozinho, sem sufixo, retornará o caminho do painel ativo atual
Exemplo: "E:\Trabalho"
%Ds
O diretório do painel ativo ou de origem atual (esteja ele no lado esquerdo ou direito)
Exemplo: "E:\Trabalho"
%Dt
O diretório do painel inativo ou de destino (esteja ele no lado esquerdo ou direito)
Exemplo: "C:\Referencia"
%Dl
O diretório do painel do lado esquerdo
Exemplo: "C:\Referencia"
%Dr
O diretório do painel do lado direito
Exemplo: "E:\Trabalho"
%Z
Usado sozinho, sem sufixo, retornará o nome do último diretório do caminho do painel ativo atual
Exemplo: "Trabalho"
%Zs
O nome do último diretório do caminho do painel ativo atual (esteja ele no lado esquerdo ou direito)
Exemplo: "Trabalho"
%Zt
O nome do último diretório do caminho do painel inativo atual (esteja ele no lado esquerdo ou direito)
Exemplo: "Referencia"
%Zl
O nome do último diretório do caminho do painel do lado esquerdo
Exemplo: "Referencia"
%Zr
O nome do último diretório do caminho do painel do lado direito
Exemplo: "Trabalho"

A variável %A pode ser usada em sistemas de arquivos virtuais (arquivos compactados abertos ou plugins de sistema de arquivos): nome completo do arquivo compactado ou nome do plugin WFX com "wfx://".

7. Se o resultado deve estar entre aspas

Como você viu anteriormente, por razões históricas e tradicionais, o DC retornará o resultado entre aspas.

Isso era útil originalmente quando tínhamos nomes de arquivos com espaços e queríamos passar o nome do arquivo como parâmetro e que todo o processo funcionasse corretamente.

Mas com as novas variáveis adicionadas, ficou claro que precisávamos de uma maneira de obter o resultado sem aspas. Um exemplo básico é quando queremos concatenar um nome de arquivo de origem, mas apenas o nome sem a extensão, e então adicionar nossa própria nova extensão que especificamos.

Assim, em vez de adicionar novas variáveis que retornariam o mesmo, mas sem as aspas, ainda podemos usar as mesmas variáveis com o mesmo significado, mas simplesmente pré-configurar algo como %"0 na linha de parâmetros para indicar ao DC que a partir de agora, na avaliação do resto da linha, não coloque as aspas no resultado.

Basicamente teremos:

%"0 : a partir deste ponto, nomes de arquivos gerados NÃO estarão entre aspas
%"1 : a partir deste ponto, nomes de arquivos gerados estarão entre aspas
%"  : também aceito, reverte para o padrão, ou seja, resultado entre aspas

A tabela abaixo dá um exemplo onde selecionamos um arquivo chamado "Lista de Clientes.mdb" e o resultado de várias combinações de strings com/sem aspas.

Exemplos com aspas ou não
ExpressãoResultado
%o.zip
"Lista de Clientes".zip
%"0%o.zip
Lista de Clientes.zip
%"0"%o.zip"
"Lista de Clientes.zip"
%"0"%o.zip" %"1%f
"Lista de Clientes.zip" "Lista de Clientes.mdb"

8. Se o caminho deve terminar com um delimitador

Como você viu anteriormente, por razões históricas e tradicionais, quando o DC retorna um caminho, ele o fará sem o delimitador de caminho final.

Isso pode ser alterado usando uma variável que determinará se as variáveis de caminho no resto da linha terão o delimitador de caminho final ou não.

Basicamente temos:

%/0 : caminhos retornados NÃO terão delimitador final
%/1 : caminhos retornados TERÃO delimitador final
%/  : também aceito, por padrão, caminhos retornados NÃO terão delimitador final

A tabela abaixo dá um exemplo onde selecionamos o diretório "C:\Usuarios\NomeUsuario\Desktop" e o resultado de várias combinações para a variável de caminho final:

Exemplos de variável de caminho final
ExpressãoResultado
%D
"C:\Usuarios\NomeUsuario\Desktop"
%/0%D
"C:\Usuarios\NomeUsuario\Desktop"
%/1%D
"C:\Usuarios\NomeUsuario\Desktop\"
%/%D
"C:\Usuarios\NomeUsuario\Desktop"

Esta variável é útil quando compomos um nome a partir de várias variáveis. Por exemplo, no Windows, %Dt\%f0 (adicionando manualmente o delimitador de diretório) em vez de %/1%Dt%f0 funcionará corretamente dentro de diretórios, mas se a raiz de um drive estiver aberta no painel inativo, o Double Commander retornará um caminho incorreto com dois delimitadores de diretório após a letra do drive.

9. Lista de arquivos

Algumas aplicações aceitarão como parâmetro um único nome de arquivo e assumirão que o arquivo é um arquivo de texto contendo uma lista de nomes de arquivos.

O Double Commander fornece variáveis que criarão no diretório de arquivos temporários um arquivo de texto temporário contendo a lista de todos os itens selecionados especificados e substituirão a variável pelo nome do arquivo temporário criado.

Variáveis de lista de arquivos
ExpressãoDescrição
%L
Nome do arquivo para a lista de nomes de arquivos completos (caminho + nome do arquivo) dos itens selecionados
%F
Nome do arquivo para a lista de apenas nomes de arquivos dos itens selecionados
%R
Nome do arquivo para a lista de apenas nomes de caminhos relativos dos itens selecionados

O Double Commander usará a codificação ANSI do sistema no Windows ou a codificação padrão do sistema em sistemas do tipo Unix (geralmente UTF-8 em distribuições GNU/Linux).

Ao fechar, o Double Commander exclui todos esses arquivos temporários.

10. Sufixos para lista de arquivos

Por padrão, os nomes de arquivos mencionados acima dentro da lista estão sem aspas. Mas você pode adicionar um sufixo para mudar isso se necessário.

Além disso, existem sufixos para especificar se você deseja que esta lista de arquivos seja codificada em UTF8 ou UTF16.

Sufixos para variáveis de lista de arquivos
ExpressãoDescrição
Q
Nomes de arquivos dentro da lista estarão entre aspas
U
A lista será codificada no formato UTF8
W
A lista será codificada no formato UTF16

11. Combinação de sufixos de lista de arquivos

Você também pode adicionar outro sufixo usando a mesma letra de sufixo mencionada anteriormente para especificar de qual painel você precisa da lista de arquivos.

Aqui estão exemplos do que é possível:

Combinação de sufixos para variáveis de lista de arquivos
ExpressãoDescrição
%LQt
Nomes de arquivos completos, entre aspas, dos arquivos selecionados do painel de destino
%FUs
Apenas nomes de arquivos, formato UTF8, dos arquivos selecionados do painel de origem
%RQW
Nomes de arquivos com caminho relativo, entre aspas, formato UTF16, do painel de origem (padrão)

12. Execução no terminal

Você pode especificar nos parâmetros se deseja que a linha de comando configurada seja executada em um terminal.

Para isso, você usará a variável %t.

Execução no terminal
ExpressãoDescrição
%t0
Executar em terminal e solicitar fechamento ao final
%t1
Executar em terminal e manter aberto ao final

13. Interação

Aqui estão duas variáveis úteis para mostrar uma mensagem e solicitar parâmetros ao usuário em tempo de execução com um valor padrão sugerido:

Interação
ExpressãoDescrição
%[mensagem a mostrar]
Uma caixa de mensagem com o texto especificado entre os colchetes será mostrada
%[mensagem;valor_padrao]
Solicitará ao usuário um valor, oferecendo um padrão

Exemplos de interação:

Exemplos de interação
ExpressãoDescrição
%[Certifique-se que EsteArquivo.ext esteja fechado!]
Exibirá a mensagem "Certifique-se que EsteArquivo.ext esteja fechado!" antes de realizar a operação.
%[Insira o valor da LARGURA para conversão de imagem;1024]
Solicitará ao usuário um valor, mostrando o texto "Insira o valor da LARGURA para conversão de imagem", sugerindo por padrão 1024, mas o usuário pode digitar outra coisa. O que o usuário digitar substituirá o que a expressão "%[pergunta;padrao]" ocupa na linha de comando.

14. Outras variáveis

Nesta última seção, mostramos variáveis que ainda não foram apresentadas.

Variáveis diversas
ExpressãoDescrição
%%
Será substituído simplesmente por um único sinal de %
%#
A partir deste ponto, o sinal # será tratado como um %
#%
A partir do estado anterior, fará com que % seja tratado como o prefixo de variável
%?
Exibirá a linha de comando prestes a ser executada.

O uso de %% é quando precisamos ter um sinal de % nos parâmetros, mas não queremos que ele seja substituído por outra coisa porque pode ser seguido por uma letra que formaria uma variável real válida.

A variável %? é particularmente útil ao configurar um novo botão de ferramenta para ter certeza de entender o que será usado como parâmetro de substituição.

Com %?, o DC permite que você veja o comando e os parâmetros reais usados para iniciar algo.

Não só isso, você pode até mudar algo no último minuto ao iniciar.

Isso é particularmente útil quando você não tem certeza dos parâmetros a passar para a aplicação de destino.

Às vezes, a combinação do sinal de porcentagem e da letra da variável pode entrar em conflito com as variáveis do sistema.

Por exemplo, se você digitar %os%ot pensando que isso será substituído pela concatenação simples das extensões de arquivos dos painéis ativo e inativo, você pode se surpreender ao ver que isso pode não funcionar no Windows.

A sequência %os% geralmente é substituída pelo nome do sistema operacional, já que %os% é a variável do sistema que o representa.

É aí que %# é útil.

Em tal tipo de exemplo, você digitaria %##os#ot.

O %# instrui o DC que a partir de agora, o # é agora o equivalente do sinal de porcentagem, para que não entre em conflito com possíveis variáveis do sistema.

Raramente necessário, mas se for, você ficará feliz em saber que existe!

E então, se necessário, o #% restaurará o % como o prefixo de porcentagem real para as variáveis.

15. Tabela de resumo de todas as variáveis

Nada novo nesta seção, mas vamos reunir todas as variáveis suportadas e seus significados em uma tabela.

Resumo das variáveis
ExpressãoDescrição
%p
Nome completo do arquivo, incluindo o caminho
%f
Apenas o nome do arquivo, incluindo a extensão
%d
Apenas o caminho
%z
O último diretório no caminho
%o
Apenas o nome do arquivo, sem a extensão
%e
Apenas a extensão do arquivo, sem o ponto
%v
Nome do arquivo relativo ao diretório ativo atual
s
Sufixo para painel de origem ou ativo (Exemplo: %ps)
t
Sufixo para painel de destino ou inativo (Exemplo: %pt)
l
Sufixo para painel do lado esquerdo (Exemplo: %pl)
r
Sufixo para painel do lado direito (Exemplo: %pr)
p
Sufixo para ambos os painéis, ativo primeiro e inativo depois (Exemplo: %pp)
b
Sufixo para ambos os painéis, esquerdo primeiro e direito depois (Exemplo: %pb)
0
Arquivo sob o cursor (Exemplo: %ps0)
1
O primeiro arquivo selecionado (Exemplo: %ps1)
2
O segundo arquivo selecionado (Exemplo: %ps2)
3
O terceiro arquivo selecionado (Exemplo: %ps3)
21
O vigésimo primeiro arquivo selecionado (Exemplo: %ps21)
{prefixo}
{} usado uma vez, definirá o prefixo para adicionar antes do nome do arquivo (ex: %f{+})
{prefixo}{sufixo}
{} usado duas vezes, definirá o prefixo e o sufixo, respectivamente antes e depois do nome do arquivo (ex: %f{[}{]})
%D
Caminho do painel ativo (origem) por padrão
%Ds
Especifica especificamente o caminho do painel ativo (origem)
%Dt
Caminho do painel inativo (destino)
%Dl
Caminho do painel do lado esquerdo, independentemente de qual esteja ativo
%Dr
Caminho do painel do lado direito, independentemente de qual esteja ativo
%Z
Nome do último diretório do caminho do painel ativo (origem) por padrão
%Zs
Especifica especificamente o nome do último diretório do caminho do painel ativo (origem)
%Zt
Nome do último diretório do caminho do painel inativo (destino)
%Zl
Nome do último diretório do caminho do painel do lado esquerdo, independentemente de qual esteja ativo
%Zr
Nome do último diretório do caminho do painel do lado direito, independentemente de qual esteja ativo
%"0
A partir deste ponto, nomes de arquivos gerados NÃO estarão entre aspas
%"1
A partir deste ponto, nomes de arquivos gerados estarão entre aspas
%"
Também aceito, faz com que nomes de arquivos gerados estejam entre aspas novamente
%/0
Por padrão, caminhos retornados NÃO terão delimitador final
%/1
Caminhos retornados TERÃO delimitador final
%/
Também aceito, por padrão, caminhos retornados NÃO terão delimitador final
%L
Nome do arquivo para a lista de itens selecionados, contendo apenas o nome completo do arquivo (caminho + nome do arquivo)
%F
Nome do arquivo para a lista de itens selecionados, contendo apenas o nome do arquivo
%R
Nome do arquivo para a lista de itens selecionados, contendo apenas nomes de caminhos relativos
Q
Sufixo para %L, %F ou %R para solicitar nomes de arquivos entre aspas
U
Sufixo para %L, %F ou %R para solicitar que o arquivo de lista esteja no formato UTF8
W
Sufixo para %L, %F ou %R para solicitar que o arquivo de lista esteja no formato UTF16
%t0
Executar em terminal e solicitar fechamento ao final
%t1
Executar em terminal e manter aberto ao final
%[mensagem a mostrar]
Caixa de mensagem com o texto especificado entre os colchetes será mostrada
%[mensagem;valor_padrao]
Solicitará ao usuário um valor e fornecerá um sugerido
%%
Será substituído simplesmente por um único sinal de %
%#
A partir deste ponto, o sinal # será tratado como um %
#%
A partir do estado anterior, fará com que % seja tratado como o prefixo de variável
%?
Exibirá a linha de comando prestes a ser executada

16. Variáveis de ambiente

Podemos usar variáveis de ambiente nas configurações do Double Commander: no nome do executável e no ícone na barra de ferramentas, nos nomes dos plugins, nos diretórios favoritos etc. É uma maneira conveniente de especificar o caminho se não quisermos usar caminhos absolutos.

O Double Commander suporta variáveis de ambiente do sistema e fornece algumas de suas próprias:

Variáveis de ambiente
VariávelDescrição
%COMMANDER_EXE%
Nome completo do executável do Double Commander (caminho + nome do arquivo) (links simbólicos serão substituídos pelo arquivo real)
%COMMANDER_PATH%
O diretório onde o executável do Double Commander está localizado
%COMMANDER_DRIVE%
O disco onde a pasta do Double Commander está localizada:
- Windows: letra do drive (com dois pontos);
- sistemas do tipo Unix: ponto de montagem.
%COMMANDER_INI%
Nome completo do arquivo de configuração principal (doublecmd.xml) (caminho + nome do arquivo)
%COMMANDER_INI_PATH%
O diretório onde os arquivos de configuração do Double Commander estão localizados
%DC_CONFIG_PATH%
O diretório onde os arquivos de configuração do Double Commander estão localizados

Os nomes das variáveis %COMMANDER_PATH% e %DC_CONFIG_PATH% não diferenciam maiúsculas de minúsculas e podemos usar sinais de porcentagem % independentemente da família do sistema operacional (isso é feito para compatibilidade com versões anteriores, o que é conveniente para uma aplicação multiplataforma). No entanto, em sistemas do tipo Unix, os nomes das variáveis de ambiente diferenciam maiúsculas de minúsculas e são tradicionalmente escritos com letras maiúsculas, por isso pode ser um bom hábito usar a grafia tradicional.

No Windows, também podemos usar adicionalmente pseudo-variáveis de ambiente do formato %$Nome%, elas correspondem às pastas padrão do sistema Windows (para obter o valor, o Double Commander usa as funções SHGetSpecialFolderPath e SHGetKnownFolderPath da API do Windows). Estas não são variáveis de ambiente normais e não estão disponíveis para processos filhos (aplicações iniciadas a partir do Double Commander), mas em outros aspectos podemos usá-las de forma semelhante às variáveis de ambiente. Todas essas variáveis estão reunidas no menu auxiliar de seleção de caminho: à direita dos botões de seleção de arquivos ou diretórios está o botão Algumas funções para escolher o caminho apropriado Algumas funções para escolher o caminho apropriado, a descrição está aqui.

Todas essas variáveis foram adicionadas ao menu da Lista de pastas comuns (submenu Diretórios especiais).


Criado originalmente por Rustem (dok_rust@bk.ru)

Valid HTML 4.0 Transitional CSS Valid!