У меня есть следующий пакетный скрипт из Википедии:
@echo off
for /R "C:\Users\Admin\Ordner" %%f in (*.flv) do (
echo %%f
)
pause
В цикле for отображаются все файлы с расширением flv, но я хочу выполнить некоторые действия с файлом (файлами), где мне нужно один раз файл без расширения и один раз с расширением. Как я мог получить эти два?
Я искал решения, но не нашел. Я настоящий новичок в партии ...
file
batch-file
Poru
источник
источник
C:\Users\Admin\Ordner\foo.flv
а %% ~ nf даст вамfoo
. Если вы хотите все, кроме расширения, используйте %% ~ df %% ~ pf %% ~ nf, что даст вамC:\Users\Admin\Ordner\foo
%%~dpnf
будет более короткой альтернативой.%1
в пакетном скрипте.echo %~n1
было то, что я был после.Если файл, который содержит ваша переменная, на самом деле не существует,
FOR
подход не сработает. Если вы знаете длину расширения, вы можете использовать одну хитрость: взять подстроку:что
-4
означает , что последние 4 цифры (предположительно .ext будут усечены).источник
echo %f:~0,-4%
в контексте примера, используемого в вопросе. Что я делаю не так?SET fl=%%f
а затемecho %fl:~0,-4%
Я также незнаком с Windows CMD, но попробуйте это:
источник
Это очень запоздалый ответ, но я решил это, чтобы решить конкретную проблему, возникшую у меня с DiskInternals LinuxReader, добавляющим «.efs_ntfs» к файлам, которые он сохранил в каталогах, отличных от NTFS (FAT32):
источник
.encrypted
добавил все свои файлы вместе с требованием выкупа. Очевидно, что атакующий сценарий должен был быть командным файлом, который обратен этому и был добавлен.encrypted
ко всем файлам.Я использую это, если я просто хочу удалить расширение из переменной (без зацикливания каких-либо каталогов или существующих файлов):
Если вы хотите удалить расширение из полного пути, используйте
%%dpnf
вместо этого:Пример:
(Используйте прямо в консоли)
источник
Использование Cygwin Bash для измельчения
источник
Если ваша переменная является аргументом, вы можете просто использовать
%~dpn
сопровождаемый номером аргумента, чтобы вам не пришлось беспокоиться о разной длине расширения.Например
%~dpn0
, вернет путь к пакетному файлу без его расширения,%~dpn1
будет%1
без расширения и т. Д.источник