Pergunta

Atualmente, estou procurando uma maneira de levar uma variável em lote e só analisar o nome do arquivo.

Por exemplo, eu passar meu arquivo de lote um parâmetro -s de outro aplicativo que é posteriormente definido para a minha variável de origem. A variável de arquivo de origem normalmente contém algo como: C:. \ Program Files \ myapp \ Instance.1 \ Data \ filetomove.ext

Eu assumo a ler a partir do final da variável até o primeiro "\" e definir o resultado para um novo nome de arquivo variável, mas eu não tenho sido capaz de usar o "para / f" commmand com sucesso.

Qualquer ajuda seria muito apreciada!

Update:. Apenas XP padrão ou Windows 2000/2003 disponível ... (não pode assumir kits de recursos instalados)

Foi útil?

Solução

Se a sua vinda como um argumento para o script, ou seja,% 1,% 2, etc, você pode extrair apenas o nome do arquivo e extensão em uma variável como este:

set FILENAME=%~nxN

em que N é o índice do argumento. Por exemplo, este script irá ecoar apenas o nome do arquivo do primeiro argumento:

@echo off
set FILENAME=%~nx1
echo %FILENAME%

Outras dicas

versão ligeiramente melhorada:

set FILENAME="%~nx1"

O parêntese extra vai garantir que os caracteres especiais, como 'e', ??não irá interferir durante a execução do lote.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top