Показать полную графическую версию : [решено] Присвоить значение переменной(исключая заданные)
Доброго дня вам товарищи!!
Есть такая задачка нужно присвоить переменной (допустим %S%) имя файла находящегося в папке D:\1 с расширением .exe, но при этом в этой папке есть еще два файла .exe (ghsrh.exe, ghsrh.exe) которые надо пропустить, их имена %s% не надо присваивать.....
Помогите плиз!!!!!!!!!!!!!!!!!!!!!!!!
zion87, как поступать, когда в папке «D:\1» несколько файлов *.exe, помимо «ghsrh.exe» и «ghsrh.exe»?
нет, там может быть только один кроме этих двух
ghsrh.exe, ghszm.exe - имена этих перепутал
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
так выводит на экран 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
надо чтобы 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
Товарищи kiripanda, Iska спасибо огромное, все ТЫРЫПЫРИТ!!!! Ну вы и красавчиКИ :))))))))
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.