Estoy tratando de escribir un archivo por lotes en Windows XP que tiene un nombre de ruta completa y da salida a la versión 8.3 nombre corto ...parámetro por lotes% ~ s1 da incorrecta 8.3 nombre corto
@echo off
echo "%~s1"
me he encontrado con un caso particular en que esta salida a una ruta incorrecta y el archivo ...
C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62[1].ja2"
"C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62_1_~1.JA2M34V\62[1].ja2"
Tenga en cuenta que la salida anterior ("C: \ DOCUME ~ 1 \ Angus \ LOCALS ~ 1 \ TEMPOR ~ 1 \ Content.IE5 \ 2JSTM34V \ 62_1_ ~ 1.JA2M34V \ 62 [1] .ja2 ") no existe. Sin embargo, si elimino la sección ".JA2M34V \ 62 [1]" de esa salida, la cadena resultante sería una ruta válida al archivo de entrada original.
Esto parece ser un problema con el uso de corchetes ([]) en el nombre del archivo. Si creo un 62.ja2 archivo en el mismo directorio, la salida será correcta ...
C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62.ja2"
"C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62.ja2"
Es esto un error en Windows? ¿Alguien sabe si hay una solución para permitir que el archivo por lotes maneje correctamente este nombre de archivo?
No, es error en tu código Está utilizando un truco obsoleto que solo existe para compatibilidad con versiones anteriores de software estúpido. No use nombres cortos. –