In batch: legge solo il nome file da una variabile con percorso e nome file
-
19-08-2019 - |
Domanda
Attualmente sto cercando un modo per prendere una variabile in batch e analizzare solo il nome del file.
Ad esempio, passo il mio file batch un parametro -s da un'altra applicazione che viene successivamente impostata sulla mia variabile di origine. La variabile del file di origine contiene in genere qualcosa del tipo: C: \ Programmi \ myapp \ Instance.1 \ Data \ filetomove.ext.
Presumo di leggere dalla fine della variabile fino al primo " \ " e impostare il risultato su un nuovo nome file variabile ma non sono stato in grado di utilizzare il " per / f " comandare con successo.
Qualsiasi aiuto sarebbe molto apprezzato!
Aggiornamento: sono disponibili solo XP standard o Windows 2000/2003 ... (non è possibile assumere i kit di risorse installati).
Soluzione
Se viene inserito come argomento nello script, ovvero% 1,% 2, ecc., puoi estrarre solo il nome file e l'estensione in una variabile come questa:
set FILENAME=%~nxN
dove N è l'indice dell'argomento. Ad esempio, questo script farà eco solo al nome file del primo argomento:
@echo off
set FILENAME=%~nx1
echo %FILENAME%
Altri suggerimenti
Versione leggermente migliorata:
set FILENAME="%~nx1"
La parentesi aggiuntiva garantirà che caratteri speciali, come "& amp;", non interferiscano durante l'esecuzione in batch.