Sto cercando di scrivere un file batch in Windows XP che prende in un nome percorso completo ed emette la versione 8.3 nome breve ...parametro Batch% ~ s1 dà errato 8,3 nome breve
@echo off
echo "%~s1"
mi sono imbattuto in un caso particolare, quando questa emette un percorso non corretto e il file ...
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"
Nota che l'uscita di cui sopra ("C: \ DOCUME ~ 1 \ angus \ LOCALS ~ 1 \ TEMPOR ~ 1 \ Content.IE5 \ 2JSTM34V \ 62_1_ ~ 1.JA2M34V \ 62 [1] .ja2 ") non esiste. Se rimuovo la sezione ".JA2M34V \ 62 [1]" da quell'output, tuttavia, la stringa risultante sarebbe un percorso valido per il file di input originale.
Questo sembra essere un problema con l'uso di parentesi ([]) nel nome del file. Se creo un file 62.ja2 nella stessa directory, l'uscita sarà corretto ...
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"
Si tratta di un bug in Windows? Qualcuno sa se c'è una soluzione alternativa per consentire al file batch di gestire correttamente questo nome file?
No, è bug nel tuo codice. Stai usando un hack obsoleto che esiste solo per la compatibilità all'indietro con un software stupido. Non usare nomi brevi. –