En lote: lea solo el nombre de archivo de una variable con ruta y nombre de archivo
-
19-08-2019 - |
Pregunta
Actualmente estoy buscando una manera de tomar una variable en lote y solo analizar el nombre del archivo.
Por ejemplo, paso mi archivo por lotes a -s parámetro desde otra aplicación que posteriormente se establece en mi variable de origen. La variable del archivo fuente generalmente contiene algo como: C: \ Archivos de programa \ myapp \ Instance.1 \ Data \ filetomove.ext.
Supongo que leer desde el final de la variable hasta el primer " \ " y establezco el resultado en un nuevo nombre de archivo variable, pero no he podido usar " para / f " comando con éxito.
¡Cualquier ayuda sería muy apreciada!
Actualización: solo XP estándar o Windows 2000/2003 disponibles ... (no se puede asumir que hay kits de recursos instalados).
Solución
Si aparece como un argumento para el script, es decir,% 1,% 2, etc., puede extraer solo el nombre de archivo y la extensión en una variable como esta:
set FILENAME=%~nxN
donde N es el índice del argumento. Por ejemplo, este script hará eco solo del nombre de archivo del primer argumento:
@echo off
set FILENAME=%~nx1
echo %FILENAME%
Otros consejos
Versión ligeramente mejorada:
set FILENAME="%~nx1"
El paréntesis adicional asegurará que los caracteres especiales, como '& amp;', no interfieran durante la ejecución del lote.