2011-03-08 14 views
7

La sintaxis% ~ f1 modifica un parámetro que representa un nombre de archivo en su ruta totalmente calificada. ¿Hay alguna manera de obtener esa funcionalidad para las variables definidas dentro del script por lotes, y no solo para los valores de los parámetros?Cómo usar modificadores de parámetros por lotes en una variable en lugar de un parámetro

Por ejemplo, si un usuario proporciona un parámetro de línea de comando "test.txt", la siguiente secuencia de comandos funciona:
eco nombre calificado:% ~ f1

Pero si trato de hacer lo mismo con una variable en lugar de un parámetro, ¿cómo puedo obtener la misma funcionalidad? Este intento es una sintaxis no válida y no funciona:
conjunto unqualifiedFilename = "test.txt"
eco nombre calificado: ~% funqualifiedFilename

Respuesta

4

La forma más simple que puedo pensar es que sólo tiene que utilizar un comando FOR.

Muestra de escritura de la hornada:

@echo off 
setlocal 
set FileName=test.cmd 

for %%i in (%FileName%) do set FullPath=%%~fi 

echo Original param was '%FileName%'; full path is '%FullPath%' 

Resultado de muestra:

Original param was 'test.cmd'; full path is 'C:\test.cmd'
+0

Funciona perfectamente, gracias! – Blaine

4

Una segunda manera es llamar a una función y utilizar el% 1 ... parámetro n%

@echo off 
set FileName=test.cmd 
call :GetFullPath %FileName% 

echo Original param was '%FileName%'; full path is '%FullPath%' 
goto :eof 

:GetFullPath 
set "FullPath=%~f1" 
goto :eof 
Cuestiones relacionadas