output wmic vuoto quando eseguito da batchfile, ma contiene informazioni quando eseguito da cmd


1

Ho questo comando wmic che scopre il PID del mio processo e funziona benissimo da cmd, ma rifiuta di produrre output quando eseguito in un file bat:

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

Quando lo eseguo da cmd, produce un file contenente

ProcessId
19352

Le informazioni sono seguite da due righe vuote. Quando lo eseguo da un file batch, produce solo un file con due righe vuote.

Ho provato /output:filename, > filenamee | more > filename, tutte con lo stesso risultato.

Perchè è questo? Come fare in modo che il comando produca output dal batch?


1
Nel file batch, stai sostituendo %con %%? %jave%al prompt dei comandi deve essere %%java%%in un file batch.
Sandeep,

%java%non è impostato in anticipo. Come SQL, wmic lo usa come un asterisco corrispondente a qualsiasi testo. Non voglio che il batch interpreti la stringa, ma la do a wmic così com'è. La soluzione di @Sandeep sembra funzionare.
peccato dal

Risposte:


2

Proprio come la maggior parte dei linguaggi di programmazione, un file batch ha anche caratteri di escape. %il segno usato nella riga di comando è un carattere di escape nel file batch e dà al comando un significato diverso. In realtà sta cercando una variabile denominata %java%.

Per risolvere questo problema, utilizzare %%anziché %in file batch. Per vedere maggiori dettagli e informazioni su altri personaggi di escape, guarda qui .

Il seguente comando dovrebbe funzionare in un file batch.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.