Filename globbing Windows vs. Unix
Asked Answered
S

2

5

Is something like this possible in the Windows standard shell using wildcards only?

$ ls -1 003[5,8]0
00350
00380
Streetwalker answered 19/7, 2012 at 8:58 Comment(0)
A
5

Not in the standard windows command shell (cmd.exe). It understands only the ? and * wildcards; no regular expressions.

Do you have the option of installing Cygwin, Windows Powershell, or another enhanced shell?

Adamok answered 19/7, 2012 at 9:7 Comment(5)
Unfortunately im not able to install any other shells, since this is a production environment and i dont have rights to do soStreetwalker
I don't think thats strictly true. You could do a regex with findstr with the input from a piped dir command, I'm not sure how to write it, but I think it should be possible. I'm sure @dbenham or @jeb will be able to come up with something :)Tricorn
Fair enough. If you just want the text output and not any side effects from the command, then dir | findstr /r "003[5,8]0" will work.Adamok
I will accept this answer, because there is no native way in windows... only by using other commands, which is not an option in my caseStreetwalker
I tried this hack of @Adamok but there was no result in the cmd.exe output nor anything new in my working directory.Ashby
C
2

yes, you can. Not with a single command, but with a combination of FOR and IF. Try this to get you started...

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!
  )
)
Caustic answered 19/7, 2012 at 10:23 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.