Algunas trampas a tener en cuenta:
Si hace doble clic en el archivo por lotes %0
, estará entre comillas. Por ejemplo, si guarda este archivo como c:\test.bat
:
@echo %0
@pause
Al hacer doble clic se abrirá un nuevo símbolo del sistema con salida:
"C:\test.bat"
Pero si primero abre un símbolo del sistema y lo llama directamente desde ese símbolo del sistema, %0
se referirá a lo que haya escrito . Si escribe test.bat
Enter, la salida de %0
no tendrá comillas porque no escribió comillas:
c:\>test.bat
test.bat
Si escribe test
Enter, la salida de %0
no tendrá extensión, porque no escribió extensión:
c:\>test
test
Lo mismo para tEsT
Enter:
c:\>tEsT
tEsT
Si escribe "test"
Enter, la salida de %0
tendrá comillas (ya que las escribió) pero sin extensión:
c:\>"test"
"test"
Por último, si escribe "C:\test.bat"
, el resultado sería exactamente como si hubiera hecho doble clic en él:
c:\>"C:\test.bat"
"C:\test.bat"
Tenga en cuenta que estos no son todos los valores posibles %0
porque puede llamar al script desde otras carpetas:
c:\some_folder>/../teST.bAt
/../teST.bAt
Todos los ejemplos mostrados arriba también afectarán %~0
, porque la salida de %~0
es simplemente la salida de %0
comillas negativas (si las hay).
echo %~dp0
no funcionará en la línea de comandos, solo en un archivo por lotes. Duh!