Пример: у меня есть файл: FILENAME.EXT, и я хочу извлечь FILENAME без расширения .EXT. Я хочу иметь возможность использовать имя файла без расширения для команды, которая принимает только имена файлов без их расширений. У меня есть утилита BCHECK, которая принимает в качестве аргумента имя файла без расширений. Используя BCHECK*. не работает, потому что все файлы имеют расширения .DAT или .IDX. Эти файлы постоянно переименовываются, поэтому мне нужно предоставить BCHECK новые имена файлов без необходимости вводить их вручную.
Как я могу подавить расширения имен файлов в интерпретаторе командной строки и пакетных файлах?
Ответы (2)
Команда Unix для этого — basename.
person
Gabe
schedule
07.08.2010
Для пакетных файлов DOS вы можете посмотреть параметры здесь. Например, следующая команда отображает имя файла без расширения для параметра 0, который является именем пакетного файла.
echo %~n0
ОБНОВЛЕНИЕ:
Вот пример, который можно добавить в пакетный файл.
FOR %%f IN (*.dat) DO bcheck -y %%~nf
Эта команда запустит bcheck -y BASENAME для каждого файла с расширением .dat в текущем каталоге. Команда представляет собой цикл for, который содержит параметр %%f. Параметр %%f содержит полное имя файла. Для каждого файла, соответствующего *.dat, будет выполняться команда после ключевого слова DO. %%~nf указывает на использование базового имени (~n) из параметра (%%f).
person
bobs
schedule
07.08.2010
@bobs: Это не сработало в DOS 6.22. У меня есть около 30 файлов с расширениями .DAT в каталоге C:\DBFILES.. У меня есть утилита BCHECK.EXE, которой в качестве аргумента требуется базовое имя 30 файлов .DAT. файлы, пример: 'bcheck -y BASENAME', можете ли вы предоставить мне рабочий пример?
- person Frank R.; 07.08.2010
@bobs: Нет, это тоже не сработало в пакетном сценарии, bcheck ответил: Файл %~nf не найден. Помните, что это Pure DOS 6.22, а не командный интерпретатор Windows cmd.exe.
- person Frank R.; 07.08.2010
@bobs: Есть ли способ подписать имя файла 8.3, например [1,8]?
- person Frank R.; 07.08.2010
@ Фрэнк, нет, нет. По крайней мере, не в DOS.
- person Joey; 09.08.2010
Итак, я просмотрел несколько пакетных утилит и трюков для DOS на MGD и других веб-сайтах, связанных с DOS, но ни один из них не работает!.. Кто-нибудь может придумать умный способ запуска утилиты, которая принимает в качестве аргумента базовые имена всех файлов в пределах каталог?
- person Frank R.; 09.08.2010
basenameработать на Unix? - person Gabe   schedule 07.08.2010