I found it. The "most-complex" way to check operating system build number before running an batch script.
Tags: batch, windows, cmd, programming
Published: 2021-11-06 02:55:59

So, technically, days ago, when I was doing stuffs for my own project, which is `WSATools`, and then I think I made the most complex way to check operating system's build number before running stuffs.
## Why did you do this?
So, Windows Subsystem for Android requires Windows 11, and it requires Windows 11. I also asked Stack Overflow, but technically no solution, which the only ones are just checking the OS version through Command Prompt, but didn't continue running.
## The actual command that I used to run it. Modified a little bit so I can explain it
### Before you try running
Make sure you downloaded any version of `fart.exe`. I built a version and included it on WSATools, and you can download v1.99c of fart for Windows [here](https://github.com/weareblahs/fart-builds/releases/tag/v1.99c).
```batch
ver >> checkver.bat
fart checkver.bat "Microsoft Windows [Version" " " >nul
fart checkver.bat "]" " " >nul
fart -C checkver.bat \r\n " " >nul
fart -C checkver.bat "   " "@echo off \r\n echo " >nul
fart checkver.bat "  " " " >nul
fart -C checkver.bat ".282 " ".282\r\n" >nul
fart checkver.bat " echo " "echo " >nul
for /f %%N in ('checkver') do set "check=%%N"
if %check% == 10.0.22000.282 (
del checkver.bat
echo Success
  pause >nul
) else (
del checkver.bat
echo Failed
)
```
### And now, here's the explanation
`ver >> checkver.bat`: This is used for getting the `ver` command output to a batch file. 
Which, of course, Opening checkver.bat on any editing software will give us this, which can't be runned directly:
```

Microsoft Windows [Version 10.0.22000.282]
```
And in the next step, we will make it runnable by making it `echo` the OS build number through command prompt and check with the terms at the original file. The output of the file will be something like this:
```ps
G:\git-working\wsatools>checkver
10.0.22000.282
```
#### The `fart checkver.bat` commands: a breakdown
Here's what the commands will run, and the output itself:

`fart checkver.bat "Microsoft Windows [Version" " "`
 - Replace `\nMicrosoft Windows [Version 10.0.22000.282]` to `\n10.0.22000.282]`

`fart checkver.bat "]" " "`
 - Replace `\n10.0.22000.282]` to `\n10.0.22000.282`

`fart -C checkver.bat \r\n " "`
 - Remove new line.

`fart -C checkver.bat "   " "@echo off \r\n echo "`
 - Transform it into a batch file by adding `echo` command that we will use later. Replaced to `@echo off\n echo 10.0.22000.282`.

`fart checkver.bat "  " " " `
 - Remove some spaces.

`fart -C checkver.bat ".282 " ".282\r\n"`
 - This also removes some spaces. You can replace `.282` to the last numbers of the build number. For example: 
   - Windows 10 21H1 (10.0.19043.1202) should replace `.282 ` to `.1202 `

`fart checkver.bat " echo " "echo "`
 - Also removes spacing before `echo`.

Check output for `checkver.bat`. It should return just the version.

```batch
for /f %%N in ('checkver') do set "check=%%N"
if %check% == 10.0.22000.282 (
del checkver.bat
echo Success
  pause >nul
) else (
del checkver.bat
echo Failed
)
```
For `del checkver.bat`, this deletes the `checkver.bat` batch file for future uses.

And finally, compare the output in `checkver.bat` with the build number set. Change it to `if %check == (build number)`.

Change `echo Success` to point to the file which you want to run, or just directly put the batch script right there.

Or else, for `echo Failed`, you can put a failed message there.