Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Присвоить значение переменной(исключая заданные) (http://forum.oszone.net/showthread.php?t=222630)

zion87 11-12-2011 14:11 1813179

Присвоить значение переменной(исключая заданные)
 
Доброго дня вам товарищи!!
Есть такая задачка нужно присвоить переменной (допустим %S%) имя файла находящегося в папке D:\1 с расширением .exe, но при этом в этой папке есть еще два файла .exe (ghsrh.exe, ghsrh.exe) которые надо пропустить, их имена %s% не надо присваивать.....
Помогите плиз!!!!!!!!!!!!!!!!!!!!!!!!

Iska 11-12-2011 15:37 1813235

zion87, как поступать, когда в папке «D:\1» несколько файлов *.exe, помимо «ghsrh.exe» и «ghsrh.exe»?

zion87 11-12-2011 16:32 1813265

нет, там может быть только один кроме этих двух

ghsrh.exe, ghszm.exe - имена этих перепутал

Iska 11-12-2011 18:09 1813331

zion87, попробуйте так:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sPath=d:\1

if exist "%sPath%\." (
        for %%i in ("%sPath%\*.exe") do if "%%~nxi" neq "ghsrh.exe" if "%%~nxi" neq "ghszm.exe" if not defined sFileName set sFileName=%%~nxi
       
        if defined sFileName (
                echo [!sFileName!]
        ) else (
                echo Not found file other [ghsrh.exe], [ghszm.exe].
        )
) else (
        echo Path [%sPath%] not found.
)

endlocal
exit /b 0


zion87 11-12-2011 18:39 1813347

так выводит на экран exe но надо чтобы set s=этот.exe еще после этого
@echo off
color 09

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
твоя часть кода
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

:start
echo :%S% это фаил? (Y/N)
set /p X=
If "%X%"=="y" goto next
If "%X%"=="n" goto nex
If "%X%"=="Y" goto next
If "%X%"=="N" goto nex
goto start
:nex
echo :Введите имя с расширением
ты
ры
пы
:next
ты
ры
пы
ры
exit

вот так возможно замутить???????

kiripanda 11-12-2011 18:52 1813362

Цитата:

Цитата zion87
надо чтобы set s »

ну замени sFileName на S


вариант с findstr
*можно использовать текстовый файл со списком исключений и регэкспы
Код:

@echo off
setlocal

set sPath=d:\1

set "S="
for /f "delims=" %%i in ('dir /b "%sPath%\*.exe" ^|findstr /bev /c:ghsrh.exe /c:ghszm.exe') do set "S=%%i"
echo [%S%]


Цитата:

If "%X%"=="y" goto next
If "%X%"=="Y" goto next
сокращается до

If /i "%X%"=="Y" goto next


zion87 11-12-2011 20:29 1813411

Товарищи kiripanda, Iska спасибо огромное, все ТЫРЫПЫРИТ!!!! Ну вы и красавчиКИ :))))))))


Время: 21:43.

Время: 21:43.
© OSzone.net 2001-