wmic output empty quando executado a partir de batchfile, mas contém informações quando executado a partir do cmd

1

Eu tenho este comando wmic que descobre o PID do meu processo e funciona bem a partir do cmd, mas se recusa a produzir saída quando executado em um arquivo bat:

wmic /output:process.pid process where (Name like '%java%' and commandLine like '%part-of-the-path%') get ProcessId

Quando eu o executo a partir do cmd, ele produz um arquivo contendo

ProcessId
19352

A informação é seguida por duas linhas em branco. Quando eu o executo a partir de um arquivo em lote, ele só produz um arquivo com duas linhas em branco.

Eu tentei /output:filename , > filename e | more > filename , todos com o mesmo resultado.

Por que isso? Como fazer o comando produzir saída do lote?

    
por sinned 18.06.2018 / 12:03

1 resposta

2

Assim como a maioria das linguagens de programação, um arquivo em lote também possui caracteres de escape. O sinal % usado na linha de comando é um caractere de escape no arquivo de lote e dá ao comando um significado diferente. Na verdade, ele está procurando por uma variável chamada %java% .

Para resolver esse problema, use %% em vez de % no arquivo em lotes. Para ver mais detalhes e informações sobre outro personagem de escape, veja aqui .

O comando a seguir deve funcionar em um arquivo em lotes.

wmic /output:process.pid process where (Name like '%%java%%' and commandLine like '%%part-of-the-path%%') get ProcessId

    
por 18.06.2018 / 14:48