Вывести файлы из директории в меню choice
Здравствуйте, помогите пожалуйста, не могу разобраться. Как вывести файлы из директории в меню типа choice?
|
Примерно так:
Код:
@echo off
set "dir=D:\Test"
pushd "%dir%"
for /f "delims=" %%i in ('dir /a-d/b 2^>nul') do (
set /a count+=1
for /f %%j in ('set /a count') do (
if %%j==10 (
echo В контексте данного решения нельзя отобразить более 9 файлов.
goto #
)
)
call set $%%count%%=%%i
call set list=%%list%%%%count%%
)
:#
for /f "tokens=1* delims=$=" %%i in ('set $') do (
echo %%j -- %%i
)
echo.
choice /c %list%
cls
for /f "tokens=1* delims=$=" %%i in ('set $') do (
if %errorlevel%==%%i type "%%j"
)
popd
pause>nul
exit /b
.
setdmg, в строке замените « D:\Test» на свою директорию и в строке
Код:
if %errorlevel%==%%i type "%%j"
замените « type "%%j"» на свою команду.
|
благодарю
еще вопросик, как сделать после *if %errorlevel%==%%i type "%%j"* копирование файла имя которого такое-же как у выбранного но с другим расширением,
для точности батник для быстрой компиляции и копирования допустим выбираем компилировать text.sp на выходе получаем text.smx и собственно как перенести test.smx?
поиск по маске я знаю как сделать но как прикрутить это суда я не понимаю
|
Код:
@echo off
set "dir=D:\Test"
set "out=D:\Work"
pushd "%dir%"
(
for /f "delims=" %%i in ('dir /a-d/b 2^>nul') do (
set /a count+=1
for /f %%j in ('set /a count') do (
if %%j==10 (
call :#
echo.
goto #####
)
)
call set $%%count%%=%%i
call set list=%%list%%%%count%%
)
)|| (
call :##
pause>nul
goto :eof
)
(
for /f "delims=." %%i in ('dir /a-d/b 2^>^&1 1^>nul') do (
if not defined var (
set var=%%i
call :###
set /p=""%%i""<nul
) else (
for /f "delims=" %%j in ('call echo "%%var%%"') do (
if not %%j=="%%i" (
set /p="; "%%i"."<nul
echo.
echo.
goto #####
)
)
)
)
)&& (
set /p=.<nul
echo.
echo.
)
:#####
for /f "tokens=1* delims=$=" %%i in ('set $') do (
echo %%j -- %%i
)
echo.
choice /c %list%
cls
for /f "tokens=1* delims=$=" %%i in ('set $') do (
if %errorlevel%==%%i (
rem В низлежащей строке вместо «cmd /c "type "%%j">"%%~nj.smx""» должна быть Ваша команда для компиляции файла "%%j" в файл "%%~nj.smx".
start "" /wait cmd /c "type "%%j">"%%~nj.smx""
md "%out%" 2>nul
copy "%%~nj.smx" "%out%">nul&& (
call :#### "%%~nj.smx" "%out%"
)
)
)
popd
pause>nul
exit /b
:#
chcp 1251>nul
for /f "delims=" %%i in ("В контексте данного решения нельзя отобразить более 9 файлов.") do (
chcp 866>nul
echo %%i
)
exit /b
:##
chcp 1251>nul
for /f "delims=" %%i in ("В директории "%dir%" отсутствуют файлы.") do (
chcp 866>nul
echo %%i
)
exit /b
:###
chcp 1251>nul
for /f "delims=" %%i in ("Не все файлы могут быть отображены по причине(ам): ") do (
chcp 866>nul
set /p=%%i<nul
)
exit /b
:####
chcp 1251>nul
for /f "delims=" %%i in ("Файл %1 скопирован в директорию %2.") do (
chcp 866>nul
echo %%i
)
exit /b
|
Время: 04:25.
© OSzone.net 2001-