Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Вывод списка файлов с указанным расширением (http://forum.oszone.net/showthread.php?t=259480)

kelevara 26-04-2013 20:57 2140183

Вывод списка файлов с указанным расширением
 
Доброго вечера!
Есть такое задание:

Вывод на экран имен всех файлов с указанным расширением, находящихся в каталоге, имя которого задается при запуске КФ первым параметром. Расширение файлов задается вторым параметром. Полученный КФ должен состоять из ОДНОЙ строки.

Для реализации сего задания я сделал такой скрипт:

Код:

@echo off
set k = c:\lab1\ & set r = *.txt & for %%a in (c:\lab1\*.txt) do echo %%a
pause

НО! При этом он выводит кроме имени и расширения еще и путь к файлу. Как от этого можно избавиться?

zion87 26-04-2013 21:00 2140185

Код:

@Echo Off & For /f "Delims=" %%a In ("%1%2") Do Echo %%~na & Pause
первый параметр путь %1=c:\lab1\ второй расширение %2=*.txt

kelevara 26-04-2013 21:25 2140208

Вложений: 1
zion87, не выходит. На скриншоте результат

upd1.
файл почему то не вложился. Короче он выдает кроме имени файла и полный путь к нему

Foreigner 26-04-2013 21:42 2140217

Код:

@pushd %1 && dir /b /a-d *%2 & popd
Где %1 путь к папке, %2 расширение ( например .txt )

Что такое "КФ" ? Командный файл?

gora 26-04-2013 21:46 2140221

Код:

@Echo Off & (For %%a In ("%~1%~2") Do Echo %%~na) & Pause>Nul
rem Used: test.bat "e:\Temp 1\" "*.txt"

Цитата:

Цитата Foreigner
Что такое "КФ" ? »

Очевидно Командный Файл. :)
Коллега, Ваш вариант выводит имена с расширениями, но может оно и не страшно для ТС, а также папки (у которых есть расширение txt)

Foreigner 26-04-2013 22:05 2140233

Цитата:

Ваш вариант выводит имена с расширениями
Цитата:

Вывод списка файлов с указанным расширением
Можно без @echo off
Код:

(For %%a In ("%~1%~2") Do @Echo %%~na) & Pause>Nul
rem Used: test.bat "e:\Temp 1\" "*.txt"

Цитата:

а также папки (у которых есть расширение txt)
Исправил

Vadikan 26-04-2013 23:58 2140268

Для меня команда FOR всегда была каким-то дзеном :)

который я так и не постиг...

PowerShell мне легче понять
Код:

# Example: powershell script.ps1 "C:\folder" "txt"
param($fldr,$ext)
$(dir "$fldr" -filter "*.$ext" | where {-not $_.PSIsContainer }).Name

Сходу тут не читается только условие исключения папок, в имени которых может затесаться .ext
Код:

| where {-not $_.PSIsContainer }

Foreigner 27-04-2013 00:40 2140285

Vadikan,
Так тоже можно:
Код:

(gci *.txt -ex [directoryinfo]).name    # или .basename, если надо без расширения

kiripanda 27-04-2013 03:59 2140303

Цитата:

выводит имена с расширениями
а было в задании выводить имена без расширений?
Код:

@dir /b/a-d "%~1\*%~2"
rem Use: test.bat "e:\Temp 1" .txt



Время: 02:55.

Время: 02:55.
© OSzone.net 2001-