No lote: Leia apenas o nome de uma variável com o caminho eo nome do arquivo
-
19-08-2019 - |
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)
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.