Показать полную графическую версию : [решено] Вывод списка файлов с указанным расширением
kelevara
26-04-2013, 20:57
Доброго вечера!
Есть такое задание:
Вывод на экран имен всех файлов с указанным расширением, находящихся в каталоге, имя которого задается при запуске КФ первым параметром. Расширение файлов задается вторым параметром. Полученный КФ должен состоять из ОДНОЙ строки.
Для реализации сего задания я сделал такой скрипт:
@echo off
set k = c:\lab1\ & set r = *.txt & for %%a in (c:\lab1\*.txt) do echo %%a
pause
НО! При этом он выводит кроме имени и расширения еще и путь к файлу. Как от этого можно избавиться?
@Echo Off & For /f "Delims=" %%a In ("%1%2") Do Echo %%~na & Pause
первый параметр путь %1=c:\lab1\ второй расширение %2=*.txt
kelevara
26-04-2013, 21:25
zion87, не выходит. На скриншоте результат
upd1.
файл почему то не вложился. Короче он выдает кроме имени файла и полный путь к нему
Foreigner
26-04-2013, 21:42
@pushd %1 && dir /b /a-d *%2 & popd
Где %1 путь к папке, %2 расширение ( например .txt )
Что такое "КФ" ? Командный файл?
@Echo Off & (For %%a In ("%~1%~2") Do Echo %%~na) & Pause>Nul
rem Used: test.bat "e:\Temp 1\" "*.txt"
Что такое "КФ" ? »
Очевидно Командный Файл. :)
Коллега, Ваш вариант выводит имена с расширениями, но может оно и не страшно для ТС, а также папки (у которых есть расширение txt)
Foreigner
26-04-2013, 22:05
Ваш вариант выводит имена с расширениями
Вывод списка файлов с указанным расширением
Можно без @echo off
(For %%a In ("%~1%~2") Do @Echo %%~na) & Pause>Nul
rem Used: test.bat "e:\Temp 1\" "*.txt"
а также папки (у которых есть расширение txt)
Исправил
который я так и не постиг...
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
Vadikan,
Так тоже можно:
(gci *.txt -ex [directoryinfo]).name # или .basename, если надо без расширения
kiripanda
27-04-2013, 03:59
выводит имена с расширениями
а было в задании выводить имена без расширений?
@dir /b/a-d "%~1\*%~2"
rem Use: test.bat "e:\Temp 1" .txt
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.