Eu tenho o seguinte script em lote da Wikipedia:
@echo off
for /R "C:\Users\Admin\Ordner" %%f in (*.flv) do (
echo %%f
)
pause
No loop for, todos os arquivos com a extensão flv são ecoados, mas quero fazer algumas ações com o (s) arquivo (s) em que preciso uma vez o arquivo sem a extensão e outra vez com a extensão. Como eu consegui esses dois?
Procurei soluções, mas não encontrei nenhuma. Eu sou um novato de verdade em lote ...
file
batch-file
Poru
fonte
fonte
C:\Users\Admin\Ordner\foo.flv
e %% ~ nf lhe dariafoo
. Se você quer tudo , exceto o uso de extensão %% ~ df %% ~ pf %% ~ nf que lhe dariaC:\Users\Admin\Ordner\foo
%%~dpnf
seria uma alternativa mais curta.%1
em um script em lote.echo %~n1
foi o que eu estava procurando.Caso o arquivo que sua variável retenha não exista, a
FOR
abordagem não funcionará. Um truque que você pode usar, se souber o comprimento da extensão, é usar uma substring:os
-4
meios que os últimos 4 dígitos (presumivelmente .ext ) será truncado.fonte
echo %f:~0,-4%
no contexto do exemplo usado na pergunta. O que estou fazendo de errado?SET fl=%%f
e depoisecho %fl:~0,-4%
Eu também sou um estranho para o Windows cmd, mas tente o seguinte:
fonte
Essa é uma resposta realmente tardia, mas eu vim com isso para resolver um problema específico que tive com o DiskInternals LinuxReader anexando '.efs_ntfs' aos arquivos que foram salvos em diretórios não NTFS (FAT32):
fonte
.encrypted
adicionou todos os seus arquivos, juntamente com uma demanda de resgate. Aparentemente, o script de ataque deve ter sido um arquivo em lotes que é o inverso disso e adicionado.encrypted
a todos os arquivos.Estou usando isso se eu simplesmente desejar remover a extensão de uma variável (sem fazer loop de nenhum diretório ou arquivo existente):
Se você deseja remover a extensão de um caminho completo, use
%%dpnf
:Exemplo:
(Use diretamente no console)
fonte
Usando o cygwin bash para cortar
fonte
Se a sua variável for um argumento, você pode simplesmente usar
%~dpn
seguido pelo número do argumento, para não ter que se preocupar com comprimentos de extensão variáveis.Por exemplo
%~dpn0
, retornará o caminho do arquivo em lotes sem sua extensão,%~dpn1
ficará%1
sem extensão, etc.fonte