Escapando% 's em nomes de pastas / arquivos na linha de comando [duplicado]

2

Alguém de uma maneira de acessar arquivos e diretórios que têm um % em seu nome (que é válido) a partir da linha de comando? Especificamente, se houver dois % e o texto entre eles corresponder a uma variável de ambiente.

Por exemplo, se houver um arquivo chamado C:\blah\%temp%.txt ou uma pasta chamada C:\Program Files\%temp%\ , nenhuma das opções a seguir funcionará porque a variável é expandida:

> dir "c:\blah\%temp%.txt"
> dir "c:\blah\^%temp^%.txt"
> dir "c:\blah\%%temp%%.txt"
> dir "c:\blah\%temp\%.txt"

> dir "c:\program files\%temp%"
> dir "c:\program files\^%temp^%"
> dir "c:\program files\%%temp%%"
> dir "c:\program files\%temp\%"


O uso de curingas funcionará, mas não selecionará o arquivo / pasta de forma exclusiva e poderá incluir outros:

> dir "c:\blah\?temp?.txt"        (also shows ztempz.temp, 1tempa.txt, etc.)
> dir "c:\program files\?temp?"   (likewise)



(Isso é frustrante porque de vez em quando - geralmente quando o Explorer é reiniciado por qualquer motivo - as variáveis de ambiente param de se expandir e alguns locais onde são usados acabam criando arquivos ou diretórios com a variável de ambiente. Por exemplo, porque eu configurei Chromium para armazenar seu cache em um subdiretório de %temp% , se a variável se expandir, é bom, mas quando isso não acontece, o Chromium cria um diretório chamado %temp% em seu próprio diretório e armazena o cache - que pode ficar grande Quero adicionar uma linha ao meu script de limpeza de arquivos temporários / indesejados para excluir automaticamente essa pasta, se existir, mas não consigo descobrir como acessá-la a partir da linha de comando sem recorrer a curingas.)

    
por Synetech 07.04.2012 / 04:17

2 respostas

7

Algo estranho aconteceu comigo quando eu testei isso.

dir "C:\Program Files\^%temp^%"

Por algum motivo, parece que as citações interferem no escape. Se eu escapar das citações também, funciona.

dir ^"C:\Program Files\^%temp^%^"

Parece feio, mas funciona.

Se não houver espaços no caminho, as cotações não serão necessárias.

    
por 07.04.2012 / 05:38
0
del c:\a\file^%named^%bob

Prova:

C:\lolnope>edit bob

C:\lolnope>move bob bob^%was^%wub
        1 file(s) moved.


C:\lolnopen>dir "bob%was%wub"
 Volume in drive C is OS
 Volume Serial Number is CC34-08D9

 Directory of C:\lolnope

04/06/2012  08:18 PM                15 bob%was%wub
               1 File(s)             15 bytes



C:\lolnope>del bob^%was^%wub

C:\lolnope>dir bob^%was^%wub
 Volume in drive C is OS
 Volume Serial Number is CC34-08D9

 Directory of C:\lolnope

File Not Found

Você também pode colocar o nome do arquivo entre aspas duplas. Isso parece funcionar com a conclusão da tabulação no CMD.EXE.

Observação: eu testei apenas no Windows Vista e no Windows 7. Isso também deve funcionar no XP.

    
por 07.04.2012 / 05:26