Il commento "rem" nel file .bat causa l'errore "25 era imprevisto in questo momento"

Aug 20 2020

Non è strano? I comandi .bat rem hanno una sorta di codice di escape?

file.bat:

rem https://sourceforge.net/p/jedit/bugs/4084/?limit=25

Eseguendolo:

C:\Users\admin>file.bat
25 was unexpected at this time.

C:\Users\admin>https://sourceforge.net/p/jedit/bugs/4084/?limit=25

Non vedo alcun livello di errore.

Risposte

4 aschipfl Aug 20 2020 at 06:10

Il remcomando supporta un argomento, vale a dire /?, ed è avido di esso. Il tuo URL contiene quella stringa.

La =è un separatore standard token (come SPACE, TAB, ,, ;), e quindi il resto sembra essere interpretato come comando un'altra (non valido).

Mettere il testo del commento tra virgolette aiuta qui poiché /?non viene più rilevato:

rem "https://sourceforge.net/p/jedit/bugs/4084/?limit=25"

Quando scrivi questo:

rem/ https://sourceforge.net/p/jedit/bugs/4084/?limit=25

anche la /?porzione non viene più rilevata. Tuttavia, i caratteri speciali come &, <, >, |, (e )vengono quindi riconosciuti.


Un'altra alternativa è usare un ::commento in stile, che in realtà è un'etichetta non valida (le etichette iniziano con a :, vedi goto /?e call /?):

:: https://sourceforge.net/p/jedit/bugs/4084/?limit=25

I caratteri speciali non sono un problema qui, ma non devono essere utilizzati all'interno di un blocco di codice tra parentesi.

js2010 Aug 20 2020 at 00:26

Oh, è strano. Rem è come un normale comando che risponde a /? per chiedere aiuto, anche se /? è sepolto da qualche parte in un'altra stringa. Mi è stato detto che mettere l'indirizzo tra virgolette lo risolve.

C:\Users\admin>rem /?
Records comments (remarks) in a batch file or CONFIG.SYS.

REM [comment]

Oppure l'intera stringa senza il 25 dà lo stesso risultato:

rem https://sourceforge.net/p/jedit/bugs/4084/?limit=

Records comments (remarks) in a batch file or CONFIG.SYS.

REM [comment]