Как показать только имена файлов без расширений, используя команду dir

Это то, что вы должны делать. Не используйте stringify и < >.

function arraysEqual(a, b) {
  if (a === b) return true;
  if (a == null || b == null) return false;
  if (a.length != b.length) return false;

  // If you don't care about the order of the elements inside
  // the array, you should sort both arrays here.

  for (var i = 0; i < a.length; ++i) {
    if (a[i] !== b[i]) return false;
  }
  return true;
}
3
задан phuclv 4 March 2019 в 05:22
поделиться

4 ответа

Используйте FOR и ECHO для достижения этой цели

Например:

for %f  in ("*.txt") do @echo %~nf

Вместо того, чтобы использовать DIR, мы используем команду FOR для просмотра списка и отправки каждого в ECHO. с опцией «~ n», вставленной в% f, чтобы расширение не отображалось.

Альтернативой является

FORFILES /c "cmd /c echo @fname"

Однако с этим я получаю кавычки вокруг каждого выходного имени файла, а это не то, что вам нужно.

В пакетных файлах вам нужно удваивать% для переменных

for %f in ("*.txt") do @echo %%~nf

Да, это безумие, но это мучительная цена, которую мы платим за использование языка пакетных операций вместо любого другого языка (на ВСЕХ !). Я как алкоголик, обещая всем и каждому, что я никогда больше не напишу строку кода партии, а потом снова и снова застенчиво возвращаюсь, чтобы сделать это снова.

0
ответ дан Eureka 4 March 2019 в 05:22
поделиться

Чтобы добавить ответ Эврики, команда vanilla dir не может достичь того, что вы ищете.

C:\Users\jacob>dir /?
Displays a list of files and subdirectories in a directory.

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

  [drive:][path][filename]
              Specifies drive, directory, and/or files to list.

  /A          Displays files with specified attributes.
  attributes   D  Directories                R  Read-only files
               H  Hidden files               A  Files ready for archiving
               S  System files               I  Not content indexed files
               L  Reparse Points             -  Prefix meaning not
  /B          Uses bare format (no heading information or summary).
  /C          Display the thousand separator in file sizes.  This is the
              default.  Use /-C to disable display of separator.
  /D          Same as wide but files are list sorted by column.
  /L          Uses lowercase.
  /N          New long list format where filenames are on the far right.
  /O          List by files in sorted order.
  sortorder    N  By name (alphabetic)       S  By size (smallest first)
               E  By extension (alphabetic)  D  By date/time (oldest first)
               G  Group directories first    -  Prefix to reverse order
  /P          Pauses after each screenful of information.
  /Q          Display the owner of the file.
  /R          Display alternate data streams of the file.
  /S          Displays files in specified directory and all subdirectories.
  /T          Controls which time field displayed or used for sorting
  timefield   C  Creation
              A  Last Access
              W  Last Written
  /W          Uses wide list format.
  /X          This displays the short names generated for non-8dot3 file
              names.  The format is that of /N with the short name inserted
              before the long name. If no short name is present, blanks are
              displayed in its place.
  /4          Displays four-digit years

Switches may be preset in the DIRCMD environment variable.  Override
preset switches by prefixing any switch with - (hyphen)--for example, /-W.

Кроме того, в качестве альтернативы предложению использовать ("*.txt"), если ваш список файлов включает в себя несколько расширений, вы можете либо исключить разные расширения , либо использовать *.*, чтобы получить все файлы с . в названии. Поиграйте с этим шаром, чтобы получить из него то, что вы хотите.

0
ответ дан Jacob 4 March 2019 в 05:22
поделиться

Это возможно с помощью команды 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 только имена файлов / полные пути без расширения.

0
ответ дан double-beep 4 March 2019 в 05:22
поделиться

В PowerShell будет намного проще:

(Get-ChildItem -File).BaseName

или

Get-ChildItem | ForEach-Object { 

В PowerShell будет намного проще:

[110]

или

[111]

Get-ChildItem можно заменить псевдонимами ls, [ 115] или dir и ForEach-Object можно заменить на %

Так что из cmd вы можете запустить любой из них для достижения цели

powershell -Com "(ls -File).BaseName"
powershell -Com (ls^ -File).BaseName
.BaseName }

Get-ChildItem можно заменить псевдонимами ls, [ 115] или dir и ForEach-Object можно заменить на %

Так что из cmd вы можете запустить любой из них для достижения цели

powershell -Com "(ls -File).BaseName"
powershell -Com (ls^ -File).BaseName
0
ответ дан phuclv 4 March 2019 в 05:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: