2012-07-19 16 views

risposta

5

Non nella shell di comando standard di windows (cmd.exe). Comprende solo il? e * caratteri jolly; nessuna espressione regolare

Avete la possibilità di installare Cygwin, Windows PowerShell o un'altra shell avanzata?

+0

Purtroppo non im grado di installare eventuali altre shell, poiché questo è un ambiente di produzione e io non sono diritti per farlo – lukuluku

+0

non credo che questo è del tutto vero. Potresti fare un'espressione regolare con 'findstr' con l'input da un comando' dir' inviato, non sono sicuro di come scriverlo, ma penso che dovrebbe essere possibile. Sono sicuro che @dbenham o @jeb saranno in grado di inventare qualcosa :) –

+0

Abbastanza giusto. Se vuoi solo il testo in uscita e non gli effetti collaterali dal comando, allora 'dir | findstr/r "003 [5,8] 0" 'funzionerà. – Simbilis

2

sì, è possibile. Non con un singolo comando, ma con una combinazione di FOR e IF. Provate a ottenere iniziare ...

setlocal enabledelayedexpansion 
for %%a in (003?0) do (
    set fn=%%a 
    set fnl=!fn:~3,1! 
    if .!fnl!==.5 (
    echo !fn! 
) 
    if .!fnl!==.8 (
    echo !fn! 
) 
)