Это возможно с помощью команды dir
и цикла for
:
@echo off
for /F "delims= eol=" %%A IN ('dir /A-D /B') do echo %%~nA
Если вам нужен полный путь без расширения, попробуйте:
[ 111]Для однострочного cmd:
for /F "delims= eol=" %A IN ('dir /A-D /B') do echo %~nA
А для полного пути без расширения попробуйте:
for /F "delims= eol=" %A IN ('dir /A-D /B') do echo %~dpnA
Эти небольшие программы, цикл по всем файлам в папке, кроме каталогов, и echo
только имена файлов / полные пути без расширения.
Вы могли использовать символ возврата (\b
) как это:
printf("processing... |");
fflush(stdout);
// do something
printf("\b/");
fflush(stdout);
// do some more
printf("\b-");
fflush(stdout);
и т.д. Вам нужно fflush(stdout)
, потому что обычно stdout буферизуется, пока Вы не производите новую строку.
Вот некоторый пример кода. Назовите advance_cursor () время от времени, в то время как задача завершается.
#include <stdio.h>
void advance_cursor() {
static int pos=0;
char cursor[4]={'/','-','\\','|'};
printf("%c\b", cursor[pos]);
fflush(stdout);
pos = (pos+1) % 4;
}
int main(int argc, char **argv) {
int i;
for (i=0; i<100; i++) {
advance_cursor();
usleep(100000);
}
printf("\n");
return 0;
}
Нет никакого действительно "стандартного" способа сделать это, так как Стандартная Библиотека C ( http://members.aol.com/wantondeb/ ) не обеспечивает функции, чтобы сделать необработанный вывод терминала/консоли.
консоль In DOS/Windows, стандартный выход способ сделать это с conio.h
, в то время как под Unix/Linux принятая библиотека с этой целью ncurses
(ncurses
, в основном инкапсулирует поведение управляющего символа, которое MBCook описывает независимым от терминала способом).
Я сделал это, давно. Существует два пути.
Пользуются библиотекой как ncurses, чтобы дать Вам контроль над терминалом. Это работает хорошо, если Вы хотите сделать много этого вида материала. Если Вы всего один это в одном небольшом месте, это - очевидно, излишество.
Печать управляющий символ.
Первый Вы печатаете "/", тогда 0x08 (клавиша Backspace), тогда "-", тогда 0x08, тогда "\"....
символ возврата перемещается, позиция курсора поддерживают одно пространство, но оставляет текущий символ там, пока Вы не перезаписываете его. Разберитесь в синхронизации (таким образом, она не вращается к быстрому или медленному), и Вы являетесь золотыми.
Вы также можете использовать \ r :
#include <stdio.h>
#include <unistd.h>
void
advance_spinner() {
static char bars[] = { '/', '-', '\\', '|' };
static int nbars = sizeof(bars) / sizeof(char);
static int pos = 0;
printf("%c\r", bars[pos]);
fflush(stdout);
pos = (pos + 1) % nbars;
}
int
main() {
while (1) {
advance_spinner();
usleep(300);
}
return 0;
}