Пакет: удаление расширения файла
У меня есть следующий пакетный скрипт из Википедии:
@echo off for /R "C:\Users\Admin\Ordner" %%f in (*.flv) do ( echo %%f ) pause
В for-loop все файлы с расширением flv получают эхо, но я хочу, чтобы некоторые действия выполнялись с файлом (-ами), где мне нужен один раз файл без расширения и один раз с расширением. Как я мог получить эти два?
Я искал решения, но не нашел их. Я настоящий новичок в партии …
- Можно проверить размер и тип ввода = файл в html5
- Откройте существующий файл, добавьте одну строку
- firebase database против плоских файлов
- Как добавить значение тайм-аута при использовании Runtime.exec () Java?
- Как создать временный файл с помощью Cocoa?
- Как проверить, существует ли строка в файле с Bash?
- как читать все файлы внутри определенной папки
- std :: fstream буферизация против ручного буферизации (почему 10-кратное усиление с ручной буферизацией)?
- Поддерживает ли Google App Engine создание файлов и папок на сервере?
- Как я могу использовать синтаксис Bash в целевых файлах Makefile?
- Как изменить таймаут на объекте .NET WebClient
- Почему по умолчанию stream файлов в C ++ имеет узкие письменные данные?
- Производительность пакетной вставки JDBC
Вы можете использовать %%~nf
чтобы получить имя файла только так, как описано в ссылке for
:
@echo off for /R "C:\Users\Admin\Ordner" %%f in (*.flv) do ( echo %%~nf ) pause
Доступны следующие параметры:
Переменная с модификатором Описание % ~ I Увеличивает% I, который удаляет любые окружающие кавычки (""). % ~ fI Расширяет% I до полного имени пути. % ~ dI Увеличивает% I только на букву диска. % ~ pI Увеличивает% I только до пути. % ~ nI Увеличивает% I только до имени файла. % ~ xI Расширяет% I только до расширения файла. % ~ sI Расширяет путь, чтобы содержать только короткие имена. % ~ aI Увеличивает% I до атрибутов файла файла. % ~ tI Увеличивает% I до даты и времени файла. % ~ zI Увеличивает% I до размера файла. % ~ $ PATH: Я просматриваю каталоги, перечисленные в среде PATH переменная и расширяет% I до полного имени первый найден. Если имя переменной среды не определено или файл не найден при поиске, этот модификатор расширяется до пустой строки.
В случае, если файл, на котором хранится ваша переменная, фактически не существует, подход FOR
не будет работать. Один трюк, который вы могли бы использовать, если вы знаете длину расширения, принимает подстроку:
%var:~0,-4%
-4
означает, что последние 4 цифры (предположительно .ext ) будут усечены.
Я также незнаком с windowsми cmd, но попробую:
echo %%~nf
Это очень поздний ответ, но я придумал это, чтобы решить определенную проблему, с которой я столкнулся с DiskInternals LinuxReader, добавляя «.efs_ntfs» к файлам, которые он сохранил в каталогах, отличных от NTFS (FAT32):
@echo off REM %1 is the directory to recurse through and %2 is the file extension to remove for /R "%1" %%f in (*.%2) do ( REM Path (sans drive) is given by %%~pf ; drive is given by %%~df REM file name (sans ext) is given by %%~nf ; to 'rename' files, move them copy "%%~df%%~pf%%~nf.%2" "%%~df%%~pf%%~nf" echo "%%~df%%~pf%%~nf.%2" copied to "%%~df%%~pf%%~nf" echo. ) pause