2017-05-10 3 views
0

Deshalb möchte ich ein Programm wie folgt aus:Slicing Strings Variablen in Batch

Enter number: 
5 
Giving first 5 characters of string "apple pie"... 
apple 

ich so etwas wie dieses

set characters=5 
set "string=apple pie" 

set string=%string:~0, %characters%% 

versucht, aber es funktioniert nicht, eine Idee, warum?

Antwort

2

entweder umschreiben

set string=%string:~0, %characters%% 

als

call set "string=%%string:~0, %characters%%%" 

oder verwenden verzögerte Expansion

@echo off 
set characters=5 
set "string=apple pie" 

setlocal enabledelayedexpansion 
set "string=!string:~0, %characters%!" 
echo %string% 

siehe Variables in batch not behaving as expected

+0

Thank you! Das hat sehr gut funktioniert, ich habe versucht, verzögerte Erweiterung zu verwenden, aber ich konnte die Ausrufezeichen nicht herausfinden. – CUZLOCKED

+0

IMHO der referierte Link spricht nicht über die Verwendung von '! This: ~ 0,% combination%!', Sondern nur um verzögerte Expansion. Siehe [diese Antwort] (http://stackoverflow.com/questions/10166386/arrays-linked-lists-and-other-data-structures-in-cmd-exe-batch-script/10167990#10167990) stattdessen genau beschreiben dieses Management, obwohl das Thema anders ist (Arrays). – Aacini