Como obter a correspondência exata de uma string no arquivo usando FIND ou FINDSTR no dos

0

Estou tentando obter a correspondência exata de um caminho ("\ Users \ sachin.a.goyal \ Desktop \ test \") que está lá em um arquivo:

 Biggest.txt:
 1 number: 
 name = DMS 3.0 R2 - Deployment Workbook_APAC v4_WMT 
 size = 15634835 
 path = \Users\sachin.a.goyal\Desktop\test\ 
 2 number: 
 name = Scenarios 
 size = 254 
 path = \Users\sachin.a.goyal\Desktop\test\New folder\

Estou usando este comando:

 findstr /x /c:"\Users\sachin.a.goyal\Desktop\test\" Biggest.txt

Mas depois desse comando, a janela do DOS está presa. Não está dando nenhum erro, mas parece que está esperando algum outro parâmetro. Por favor ajude.

    
por Sachin 08.08.2012 / 08:55

1 resposta

0

O / x não funcionará, pois toda a linha precisa corresponder à string de pesquisa e, nesse caso, é prefixada com path = . Além disso, os símbolos \ precisam ser escapados para que não sejam interpretados como comandos. Finalmente, o modo de expressão regular ajudará a capturar a linha certa, pois termina em um espaço e depois no final da linha - o fim da linha pode ser representado como $ :

H:\>findstr /r /c:"\Users\sachin.a.goyal\Desktop\test\ *$" biggest.txt
path = \Users\sachin.a.goyal\Desktop\test\

O motivo da suspensão da pesquisa é provavelmente um dos \ que corresponde a um comando.

Se você estiver usando uma variável para manter o caminho sendo pesquisado, ainda precisará escapar das barras invertidas. Você pode fazer isso com o recurso de substituição:

set path="c:\Users\sachin.a.goyal\Desktop\test\"
set path=%path:\=\%
echo path
c:\Users\sachin.a.goyal\Desktop\test\

A segunda linha diz, substitua todos os backslahes por barras duplas invertidas. Infelizmente eu não tenho uma caixa do Windows para testar agora, mas você pode precisar escapar das barras invertidas ainda:

    set path=%path:\=\\%
    
por 08.08.2012 / 09:24