Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/50: Рейтинг темы: голосов - 50, средняя оценка - 5.00
 Аватар для Skif-N1
1 / 1 / 1
Регистрация: 26.11.2012
Сообщений: 24

Вывод имён файлов каталога в виде списка, способ представления которого определяется выбором пользователя

30.03.2013, 13:24. Показов 10632. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В этой программе мне не хватает кнопки Выход/Закрыть именно клавишей "ESC" (escape)
т.е. Нажал ESC - батник закрылся.
Другие советы по улучшению программы принимаються тоже)))
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Echo off
:m1
Echo Выберите способ представления оглавления:
Echo.
echo 1 - По времени создания (Возрастание)
echo 2 - Убывание
echo 3 - По размеру (Возрастание)
echo 4 - Убывание
echo Esc - exit 
echo.
Set /p choice=Ваш выбор: 
chcp 1251
if "%choice%"=="1" dir /b /od /s /a *.doc *.txt >1.txt
if "%choice%"=="2" dir /b /o-d /s /a  *.doc *.txt >2.txt
if "%choice%"=="3" dir /b /os /s /a *.doc  *.txt >3.txt
if "%choice%"=="4" dir /b /o-s /s /a *.doc  *.txt >4.txt
if ?????????????????? exit /b
if "%choice%"=="%" echo error
Echo.
:error
cls
goto m1
Echo.
pause
__
Работает стабильно при сохранении кода в 866(OEM) кодировке. Я использовал AkelPad 4.8.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.03.2013, 13:24
Ответы с готовыми решениями:

Вывод списка файлов из каталога
Задача: вывести список файлов с расширением .king в ListView. На моём этапе выводит все что есть в папке. Подкиньте какой-то...

Вывод списка файлов из каталога
Указывает ошибку на ShowDirectory, ListBox1, Caption. Что нужно делать и что значит ShowDirectory??? Помогите пожалуйста.

Вывод списка имён каталогов и поиск в этих каталогах файлов с определёнными расширениями
Всем привет, прошу прощения , но в программировании я полный ноль, нужной мне инфы не нашел ( может плохо искал :( ). В общем задача такая,...

60
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.03.2014, 01:42
Студворк — интернет-сервис помощи студентам
sotik, это называется не автоматически, а циклически.
Надо просить Charles Kludge, чтобы добавил нужный функционал тайм-аута с выбором кнопки по умолчанию по типу как это делает утилита choice с ключами /t и /d.
Но будет ли она отлавливать очередь буфера нажатых клавиш командной строки, введенных еще до запуска этой утилиты, большой вопрос.
Утилита choice очередь не воспринимает.
0
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87
04.04.2014, 13:10
Подскажите пожалуйста,а где можно глянуть коды клавишь?
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
04.04.2014, 13:15
Дык, у Ральфа.
1
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87
04.04.2014, 13:41
Я там ниче не понял. вобщем какой код у стрелки вверх и стрелки вниз?
Делаю Радио на cmd...

Добавлено через 6 минут
вобщем нашел:
PageUp
33
0×21
VK_PRIOR

PageDown
34
0×22
VK_NEXT

Добавлено через 12 минут
Ну а оно не работает:
Bash
1
2
3
4
5
6
 
:Menu
echo Выбери стрелками нужный пункт
getch32
if %errorlevel%==33 (goto Menu) else (goto Start)
:Start
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
04.04.2014, 21:00
sotik, та Вы сами можете "попросить" утилиту написать какой код у клавиши:

Bash
1
2
3
4
5
@echo off
:begin
getch32
echo %errorlevel%
goto begin
1
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
04.04.2014, 21:49
Цитата Сообщение от sotik Посмотреть сообщение
Делаю Радио на cmd..
Вот теперь поясните Вашу мысь.
0
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87
04.04.2014, 21:59
Как пояснить...
Ну вот пока что получилось:
Вложения
Тип файла: 7z Радио Наум.7z (18.8 Кб, 15 просмотров)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
05.04.2014, 01:27
Написал альтернативную утилиту, чтобы можно было получить 2-й байт.
(это определение стрелок и клавиш F1-F12).

Поскольку через Errorlevel мы не можем вернуть одновременно 2 значения,
для 2-байтовых я закодировал результат так:
- если байт = 0, к результату прибавляется 1000.
- если байт = 244, то + 2000.
- если байт = что-то другое, то +3000.

В остальном коды возвращаются согласно ANSI.

source
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <conio.h> 
 
int main() { 
    int modif, ret;
    
    ret = _getch();
    if ( _kbhit() ) {
        modif = ret;
        ret = _getch();
        switch (modif) {
        case 0:
            ret += 1000;
            break;
        case 224:
            ret += 2000;
            break;
        default:
            ret += 3000;
            break;
        }
    }
    return ret;
}
Вложения
Тип файла: zip ScanCode.zip (56.0 Кб, 37 просмотров)
1
 Аватар для KiraLis39
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
25.07.2014, 10:14
Хорошо, а если писать ВАТ в удобном блокноте SynWrite, там есть при нажатии КНТРЛ+. такое окошко с кодовыми значками и символами? Нет ескейпа?

Можно же найти по номеру значок ескейпа и на его событие назначить close в конце-концов..
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
25.07.2014, 12:02
Положите рядом с батником утилиту scancode.exe

Выполните батник:

Bash
1
2
3
4
@echo off
scancode
echo %errorlevel%
pause
Нажмите ESC и увидите код нажатой клавиши без необходимости смотреть таблицу.
0
 Аватар для KiraLis39
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
26.07.2014, 13:04
Ага, это если мне не нужен, к примеру, знак U+2764. Как его нажмешь то? Через АЛЬТ эксперементировать?
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
26.07.2014, 16:17
Я не понимаю Вашего вопроса.
0
 Аватар для KiraLis39
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
26.07.2014, 16:47
Ну вот я у себя в блокноте SynWrite, в ВАТ, нажал комбинацию и вижу таблицу знаков, откуда могу вставить знак bksp или сердечко там, нотки.. А как я через программу определяющую код возврата с клавиатуры получу значение нотки? А просто кнопки можно скачать таблицу всю с той же википедии и распечатать себе на стену за монитором.

Добавлено через 52 секунды
так же я пользуюсь иногда Альт+255, она так же есть с той таблице. Полезная вещь.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
26.07.2014, 16:54
Зачем это нужно?

Моя утилита не поддерживает ввод через ALT +
0
 Аватар для KiraLis39
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
26.07.2014, 17:10
Я о том и говорю, для подобных случаев этот блокнот и советую. К примеру мне нужны в моейц программе такие знаки - это часть ее работы. Потому в моем случае такой редактор - большой плюс. Может еще кому-то пригодится эта инфа.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
26.07.2014, 17:14
Тогда лучше напишите в этой теме: Кто какие программы использует для написания батников?
+ преимущества этого ПО
+ скрин, будет сразу понятно.
0
 Аватар для KiraLis39
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
26.07.2014, 17:17
Цитата Сообщение от Skif-N1 Посмотреть сообщение
Работает стабильно при сохранении кода в 866(OEM) кодировке. Я использовал AkelPad 4.8.
Я сейчас на эту тему подсказываю. Реклама - уже пассивный процесс..
0
 Аватар для Malysh-ok
2 / 2 / 0
Регистрация: 17.10.2013
Сообщений: 62
09.10.2018, 07:42
Цитата Сообщение от Dragokas Посмотреть сообщение
Написал альтернативную утилиту, чтобы можно было получить 2-й байт.
(это определение стрелок и клавиш F1-F12).
Вот это однозначно в шапку нужно (точнее сюда)!
Спасибо еще раз!
0
 Аватар для Malysh-ok
2 / 2 / 0
Регистрация: 17.10.2013
Сообщений: 62
10.10.2018, 19:54
Цитата Сообщение от Dragokas Посмотреть сообщение
Написал альтернативную утилиту, чтобы можно было получить 2-й байт.
(это определение стрелок и клавиш F1-F12).
Мне не понятно, зачем (при каких условиях) прибавлять 3000? По-моему - это лишнее. И еще, вроде более правильный код - это сначала вызывать _kbhit(), или я не прав (см. ниже)?

Тоже написал утилиту, чтобы можно было получить 2-й байт. При этом есть возможность очистить консольный буфер ввода. Это ОЧЕНЬ полезно, если в результате долгого выполнения куска bat-файла пользователь активно долбил клавиши, и к моменту вызова утилиты весь этот мусор сидит в буфере ввода.
Sourse
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Если указан аргумент -reset - программа очищает
// консольный буфер ввода.
#include <conio.h> 
#include <Windows.h>
using namespace std;
int main(int argc, char* argv[]) { 
    int modif, ret;
    char key[10];
    HANDLE hStdin;
    
    strcpy(key, "-reset");
    for (int i=1; i<argc; i++) {
        if (strcmp(argv[i], key) == 0) {
            hStdin = GetStdHandle(STD_INPUT_HANDLE);
            FlushConsoleInputBuffer(hStdin);
            break;
        }
    }
 
    while( !_kbhit() ) {}
    modif = _getch();
    switch (modif) {
    case 0:
        ret = _getch();
        ret += 1000;
        break;
    case 224:
        ret = _getch();
        ret += 2000;
        break;
    default:
        ret = modif;
        break;
    }
    return ret;
}
Вложения
Тип файла: zip ScanCodeExt.zip (16.5 Кб, 15 просмотров)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
11.10.2018, 18:50
Malysh-ok, хз, мне например такой код выдаёт, когда нажимаешь одновременно две основные клавиши, например A + S.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2018, 18:50
Помогаю со студенческими работами здесь

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

Вывод списка файлов из каталога в StringGrid
Доброе утро всем! Разрабатываю приложение, которое выводит список названий pdf файлов и количество страниц в них из определенного...

Написать программу, которая обеспечивает:начальное формирование каталога файлов;вывод каталога файлов;удаление файлов...
Уважаемые хакеры!Прошу вашей помощи!Я в СИ не особо шарю.((( А на днях уже сдавать.Очень рассчитываю на любую вашу помощь. Вот задача. ...

Вывод списка файлов в компонент из каталога выбираемого в TDirectoryListBox
Всем доброго времени суток! Можно ли вывести список файлов (например в ListBox) из каталога, выбираемого через компонент...

Вывод списка имен всех файлов из указанного каталога
Написать программу вывода списка имен всех файлов из указанного каталога и всех вложенных в порядке возрастания или убывания размера ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru