2009-04-28 12 views
1

J'ai écrit une application qui devra développer des chaînes d'environnement dans un fichier.

À cet effet, je pourrais utiliser les fenêtres fonction standard API, ExpandEnvironmentStrings: http://msdn.microsoft.com/en-us/library/ms724265(VS.85).aspx

J'ai quelques problèmes avec cette fonction bien. Première: The size of the lpSrc and lpDst buffers is limited to 32K.

suivant: Note that this function does not support all the features that Cmd.exe supports. For example, it does not support %variableName:str1=str2% or %variableName:~offset,length%.

Je voudrais mettre en œuvre ces extras cmd.exe permet, mais je ne sais pas exactement ce qu'ils sont. : ~ offset, la longueur est un peu évidente ... sous-chaîne. Mais je ne sais pas ce que le premier est.

Des idées?

Billy3

Répondre

5

C'est une substitution de chaîne.

En fait, si variableName est réglé sur "I am three", puis "%variableName:three=four%" génère "I am four" (guillemets doubles mises en forme pour mieux, ils ne font pas partie des chaînes).

C:\Documents and Settings\Administrator>set x=I am three 

C:\Documents and Settings\Administrator>echo %x% 
I am three 

C:\Documents and Settings\Administrator>echo %x:three=four% 
I am four 

Vous pouvez également remplacer par une chaîne vide (évidente) et le remplacer dès le début de la chaîne (pas si évident):

C:\Documents and Settings\Administrator>echo %x:three=% 
I am 

C:\Documents and Settings\Administrator>echo %x:*am=I am not% 
I am not three 

En outre, la variante de sous-chaîne est Pythonesque en ce négatif numéros fonctionnent à partir de la fin de la chaîne:

C:\Documents and Settings\Administrator>echo %x:~,4% 
I am 

C:\Documents and Settings\Administrator>echo %x:~-5% 
three 
+0

Ie, rechercher et remplacer? –

+0

Ah, je vois maintenant :) Merci! –

+0

En tant que survivant de COMMAND.COM depuis MSDOS 2 ou plus, CMD.EXE est tellement plus agréable. Il est particulièrement agréable de pouvoir tester et démontrer des choses comme la substitution de variables directement à partir d'une invite de commande interactive. Dans le bon vieux temps, certaines choses comme la substitution de variables d'environnement ne fonctionnaient que dans des fichiers batch, et non à l'invite. – RBerteig

Questions connexes