En lote: lea solo el nombre de archivo de una variable con ruta y nombre de archivo

StackOverflow https://stackoverflow.com/questions/454670

  •  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).

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top