Войти

Показать полную графическую версию : команда if


e9990638
07-08-2013, 20:30
Привет всем.
Помогите правильно написать команду для cmd-файла. В данном случае с IF.
Моя команда (установить обновления в текущем каталоге с подпапками, вывести текущую информацию, и пропустить файл (не делать с ним ничего) e999-64.MSP

for /R . %%f in (*.msp) do (
if %%f NEQ e999-64.MSP (
echo Processing "%%f" Update...
msiexec /p %%f /qn /norestart
)
)

Выполняется вроде бы все, кроме if.

Petya V4sechkin
07-08-2013, 21:53
e9990638, исправьте строку:
if /i %%~nxf NEQ e999-64.MSP (

e9990638
07-08-2013, 23:15
Petya V4sechkin, Спасибо.

P.S. А какой будет код, если файлов будет больше.
Например: e999-64.MSP; e999-32.MSP; e999-17.MSP.

Спасибо за ответ.

Iska
07-08-2013, 23:31
Например, так (не проверялось):
@echo off
setlocal enableextensions enabledelayedexpansion

for /r "." %%i in (*.msp) do (
set /a bFound = 0

for %%j in ("e999-64.MSP" "e999-32.MSP" "e999-17.MSP") do if /i "%%~j" equ "%%~i" set /a bFound = 1

if !bFound! neq 1 (
echo Processing "%%~i" Update...
msiexec.exe /p "%%~i" /qn /norestart
)
)

endlocal
exit /b 0

e9990638
08-08-2013, 15:13
Iska, не работает.

Iska
08-08-2013, 18:01
Например, так (не проверялось): »
Iska, не работает. »
Проверил. Исправьте одну строку так:
for %%j in ("e999-64.MSP" "e999-32.MSP" "e999-17.MSP") do if /i "%%~j" equ "%%~nxi" set /a bFound = 1

e9990638
08-08-2013, 20:49
Iska, Спасибо, все работает.




© OSzone.net 2001-2012