EDIT: Avrei dovuto aggiungere, se non è possibile utilizzare il comando WHERE dal prompt dei comandi, controllare la variabile PATH. (Basta usare il comando “path”.) Assicuratevi che C:\Windows\System32 sia nel vostro path. Ecco dove si trova “where.exe”.
WHERE è il comando che state cercando! WHERE è come un incrocio tra il “quale” integrato nella shell UNIX e il comando “localizza”, in quanto funziona sia per i comandi eseguibili che per i file regolari.
È anche un po’ più complesso di uno dei due, anche se, in generale, un semplice
WHERE <file>
funzionerà.
È diverso dal comando “localizza” in quanto non sta cercando attraverso l'intero filesystem. Invece, il comportamento predefinito è quello di cercare i file in due posizioni:
- La directory corrente.
- Tutte le directory nella variabile PATH.
Quindi, qualsiasi comando che si possa eseguire direttamente da un prompt dei comandi senza specificare la directory, sarà trovato dal comando WHERE. (Perché qualsiasi comando del genere è già nella lista delle variabili PATH.)
Se volete cercare solo nella variabile path del comando, potete usare:
WHERE "$path:<search text>"
``` ```
WHERE /R <Top Level Directory> <search text>
Se, invece, volete trovare tutte le copie di un file in un albero di directory, potete usare:
WHERE /R C:\Windows dxdiag
C:\Windows\System32\dxdiag.exe
C:\Windows\SysWOW64\dxdiag.exe
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiag.exe
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiag.exe
``` ```
WHERE /R C:\Windows dxdiagn
Infine, WHERE troverà i comandi e qualsiasi file con estensione dalla variabile PATHEXT senza includere l'estensione. Tutti gli altri file devono essere specificati esattamente o con caratteri jolly.
Prendiamo ad esempio i file “dxdiag.exe” e “dxdiagn.dll”. Si noti il seguente comando e il suo output:
WHERE /R C:\Windows dxdiagn*
C:\Windows\System32\dxdiagn.dll
C:\Windows\System32\en-US\dxdiagn.dll.mui
C:\Windows\SysWOW64\dxdiagn.dll
C:\Windows\SysWOW64\en-US\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_daccd04369b09c70\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiagn.dll
C:\Windows\WinSxS\x86_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_7eae34bfb1532b3a\dxdiagn.dll.mui
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiagn.dll
Riesce a restituire tutte le versioni di “dxdiag.exe” perché “.exe” è una delle estensioni della variabile PATHEXT. (Nota: anche “WHERE dxdiag” avrebbe funzionato, perché C:\Windows\System32 è nella variabile PATHEXT.)
&001
d'altra parte, non riesce a restituire alcun risultato, perché “.dll” è non in PATHEXT.
In questo caso, guardate il risultato che l'aggiunta di un jolly ci dà:
&001
Restituisce con successo tutte le versioni di dxdiagn.dll.
Per maggiori informazioni, usate “WHERE /? Spero che questo sia d'aiuto!