Próbuję napisać plik wsadowy w systemie Windows XP, które odbywają się w pełni kwalifikowanej nazwy ścieżki i wysyła wersję 8.3 krótkie imię ...parametr Batch% ~ s1 daje błędny 8.3 Nazwa skrócona
@echo off
echo "%~s1"
mam natknąć jednym szczególnym przypadku, gdy ten wyprowadza nieprawidłową ścieżkę i plik ...
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"
Należy zauważyć, że powyższe wyjście ("C: \ DOKUME ~ 1 \ Angus \ LOCALS ~ 1 \ tempor ~ 1 \ Content.IE5 \ 2JSTM34V \ 62_1_ ~ 1.JA2M34V \ 62 [1] .ja2 ") nie istnieje. Jeśli jednak usuniemy sekcję ".JA2M34V \ 62 [1]" z tego wyjścia, wynikowy ciąg będzie poprawną ścieżką do oryginalnego pliku wejściowego.
To wydaje się być problemem przy użyciu nawiasów ([]) w nazwie pliku. Jeśli utworzę plik 62.ja2 w tym samym katalogu, wynik będzie poprawny ...
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"
Czy to błąd w systemie Windows? Czy ktokolwiek wie, czy istnieje obejście pozwalające plikowi wsadowemu prawidłowo obsługiwać tę nazwę pliku?
Nie, to błąd w kodzie. Używasz przestarzałego narzędzia hakerskiego, które istnieje tylko w celu zapewnienia wstecznej zgodności z głupim oprogramowaniem. Nie używaj krótkich nazw. –