Il mio primo post, la maggior parte delle domande già risolte utilizzando questa conoscenza fornita qui. Ma ora sono a corto di idee, di nuovo con una domanda sulla gestione dei caratteri velenosi in cmd.exe.Segnali di percentuale di fuga in determinate variabili
Supponiamo che vi sia una variabile di stringa specificata racchiusa tra virgolette. La maggior parte dei personaggi velenosi è già stata sostituita da caratteri comuni in precedenza, quelli di sinistra che disturbano la sceneggiatura sono "&", "(", ")" e "%". Successivamente la stringa deve essere ripetuta in un file senza virgolette. Così ho avuto l'idea di sfuggire ai personaggi veleno triplicati:
@echo off & setlocal ENABLEEXTENSIONS
SET AlbumArtist=%1
CALL :EscapePoisonChars %AlbumArtist% AlbumArtist_VDN
SET "FlacHyperLink==hyperlink^("file://%AlbumArtist_VDN%"^;"LossLess"^)")
echo %FlacHyperLink%
echo %AlbumArtist_VDN%
endlocal &GOTO:EOF
:EscapePoisonChars
@echo off & setlocal ENABLEEXTENSIONS
SET TmpString=%1
SET TmpString=%TmpString:&=^^^&%
SET TmpString=%TmpString:(=^^^(%
SET TmpString=%TmpString:)=^^^)%
endlocal&SET %2=%TmpString:~1,-1%&GOTO :EOF
Quando chiamo il mio script sopra ottengo i risultati attesi - a parte il segno mancante per cento:
G:\YAET\20130204_Work>TryAmper.bat "100% Rock & Roll (7' UpMix)"
=hyperlink("file://100 Rock & Roll (7' UpMix)";"LossLess")
100 Rock & Roll (7' UpMix)
G:\YAET\20130204_Work>
so che la percentuale può essere sfuggito da solo. Quindi "%%" normalmente porterà a un singolo "%" letterale. Ma non è stato possibile trovare una procedura di sostituzione funzionante per i segni di percentuale perché cmd lo interpreta sempre come variabile e cerca di espanderlo. È questa la direzione sbagliata completa per gestire questo problema o solo fraintendere l'espansione delle variabili? Qualsiasi suggerimento benvenuto! Grazie!
Cheers, Martin
Modifica proprio codice Rimosso, vedi sotto la risposta di Jeb per soluzione pulita.
Grazie per l'aiuto, Martin
Jeb, speravo che rispondessi dopo aver visto [link] (http://ss64.org/viewtopic.php?pid=4919#p4919) con il tuo incredibile trucco che ancora non capisco completamente. Finalmente il tuo suggerimento sopra ha risolto il mio problema con i personaggi velenosi. Ho aggiunto uno snippet di codice breve basato sulla tua soluzione alla mia domanda perché voglio usare il formato del blocco di codice. Molte grazie! Martin – CmdQuestion
Aarrg - che diavolo hai fatto? Ho aggiunto una soluzione _clean_ – jeb
Jeb, scusa se non sei soddisfatto del mio lavoro. Usando il codice non ho riscontrato problemi per nessuna combinazione di caratteri, quindi ho pensato che sarebbe stato abbastanza bello presentare il risultato qui. L'ho saltato e mi sono riferito alla tua soluzione ora. Martin – CmdQuestion