2013-07-03 3 views
0

EDIT: Я только что изменил, если если ещеПростые подстановочные использовать

IF "%CD:~1%"==":\" ( set FIR=%CD:~0,2% ) ELSE ( set FIR=%CD% )

Попытка использовать маску, чтобы обнаружить, если пакетный файл находится в корневом каталоге (как первопричины там быть обратная косая черта в конце DIR)

Мне нужно определить с помощью простого оператора if, является ли это:: или нет. Я пробовал использовать подстановочные знаки *: \ и?: \, Но безрезультатно. Если я использую букву диска, например: G: \ it работает.

if %CD%==G:\ echo SOMETHING WRONG HERE 

работает отлично, пока буква диска не изменится. Где, как

if %CD%==?:\ echo SOMETHING WRONG HERE 

или

if "%CD%"=="?:\" echo SOMETHING WRONG HERE 

не работает.

EDIT: после прочтения получается, если и подстановочные знаки несовместимы!

+0

Wildcards Wildcards не поддерживаются IF, так что% COMPUTERNAME% == SS6 * не будет соответствовать SS64 Обойти это можно получить подстроку и сравнить только те символы: SET _prefix =% COMPUTERNAME: ~ 0, 3% IF% _prefix% == SS6 GOTO they_matched –

ответ

0

Подстановочные знаки не могут использоваться в инструкциях IF в команде.

2

попробовать это:

if "%CD:~-2%"==":\" (echo root) else echo NOT root 

см DOCU help set.

+0

это может быть более точным 'if"% cd: ~ -2% "==": \ "echo is root' – foxidrive

+0

@foxidrive для какого случая вы думаете? – Endoro

+1

Если используется путь c: \ abc \, то ваш код также вернет, что это корень. С моим предложением он вернет, что это не корень. Это, возможно, спорный вопрос, поскольку% cd% вернет d: \ abc, и ваш код будет работать нормально во всех случаях. – foxidrive