If – Conditionally perform command – Windows CMD –


If the string being compared by an IF command includes delimiters such as [Space] or [Comma], then either the delimiters must be escaped with a caret ^ or the whole string must be “quoted”.
This is so that the IF statement will treat the string as a single item and not as several separate strings.

How can i check if a command exists in a shell script?

In general, that depends on your shell, but if you use bash, zsh, ksh or sh (as provided by dash), the following should work:

if ! type "$foobar_command_name" > /dev/null; then
  # install foobar here

For a real installation script, you’d probably want to be sure that type doesn’t return successfully in the case when there is an alias foobar. In bash you could do something like this:

if ! foobar_loc="$(type -p "$foobar_command_name")" || [[ -z $foobar_loc ]]; then
  # install foobar here

If either condition is true (or)

This can be tested using a temporary variable:

Set “_tempvar=”
If SomeCondition Set “_tempvar=1”
If SomeOtherCondition Set “_tempvar=1”
if %_tempvar% EQU 1 Command_to_run_if_either_is_true

Prevent overwriting a file using cmd if exist

I noticed some issues with this that might be useful for someone just starting, or a somewhat inexperienced user, to know. First…

CD /D "C:Documents and Settings%username%Start MenuPrograms"

two things one is that a /D after the CD may prove to be useful in making sure the directory is changed but it’s not really necessary, second, if you are going to pass this from user to user you have to add, instead of your name, the code %username%, this makes the code usable on any computer, as long as they have your setup.exe file in the same location as you do on your computer. of course making sure of that is more difficult.

start \filerrepolab"software""myapp"setup.exe

the start code here, can be set up like that, but the correct syntax is

start "\filterrepolabsoftwaremyapp" setup.exe

This will run: setup.exe, located in: filterrepolab…etc.

:/>  Что делать если Windows 10 не видит диск D

Test the existence of files and folders

IF EXIST filename   Will detect the existence of a file or a folder.

The script empty.cmd will show if the folder is empty or not (this is not case sensitive).


Wildcards are not supported by IF, so %COMPUTERNAME%==SS6* will not match SS64

A workaround is to retrieve the substring and compare just those characters:
SET _prefix=%COMPUTERNAME:~0,3%

IF %_prefix%==SS6 GOTO they_matched

If Command Extensions are disabled IF will only support direct comparisons: IF ==, IF EXIST, IF ERRORLEVEL also the system variable CMDEXTVERSION will be disabled.

IF does not, by itself, set or clear the Errorlevel.


Оставьте комментарий