Как обойти проблему с дизайном в Windows dir?

dir /b создает хороший список только для файлов

dir /x создает подробный список (дата, время, размер, длинное имя, короткое имя)

Однако, если вы объедините два (то есть dir /b /x), ключ / x игнорируется. это поведение в соответствии с этой страницей является дизайном.

Поэтому, если вы запрашиваете простой список, содержащий только краткие имена файлов, Редмонд (Microsoft) говорит, что давать вам его противозаконно.

Как можно обойти эту проблему "по замыслу"?

Спасибо заранее

ps это поможет мне добиться чего-то объясненного в этом вопросе. пять добрых друзей отправили ответы, которым я очень благодарен, но ни один из ответов не помог мне получить то, что я хочу.

3 ответа

Решение

Попробуй это:

for /f "usebackq delims=" %X in (`dir /b`) do @echo %~nsxX

Или, если вам нужны полные пути:

for /f "usebackq delims=" %X in (`dir /b`) do @echo %~fsX

Для получения дополнительной информации см. for Помогите:

for /?

Обратите внимание, что если вы используете эти команды в командном файле, вам нужно удвоить % приметы. Например:

for /f "usebackq delims=" %%X in (`dir /b`) do @echo %%~nsxX

Если не считать выгрузки dir /x в текстовый файл и его анализа, я не уверен, что предложить. У вас есть возможность запустить все, что вы делаете в коде?

Это более сложное решение, но писать что-то, используя perl или другой язык сценариев; или иди и напиши какой-нибудь код на C#.

Я подозреваю, что вы получите те же ответы, что и на предыдущий вопрос...

Вы можете написать свой собственный каталог исполняемого файла. Это не займет много времени, чтобы что-то взбодрить в C#. Используйте Directory.GetFiles(), чтобы получить список каталогов, и передайте каждый из них в функцию Win32 "GetShortPathName()".

На этой странице есть хороший пример того, как вызывать GetShortPathName () из C#: http://csharparticles.blogspot.com/2005/07/long-and-short-file-name-conversion-in.html

Другие вопросы по тегам