Альтернативой без отложенного расширения является использование команды call
следующим образом:
@echo off
set "myString=something"
set "result=4"
echo %myString%
call echo %%myString:~%result%%%
Что происходит, так это то, что расширение Result
выполняется немедленно, но расширение myString
call
:
%%
после echo
заменяется одним cmd
экземпляром cmd
: %
; %result%
расширяется, то есть заменяется его значением 4
; %%
заменяется одним %
; echo %myString:~4%
передается в новый экземпляр cmd
, открытый call
, таким образом отображается thing
; Обратите внимание, что это работает только в командный файл, но не в командной строке (cmd
).
Если вам нужно отсроченное расширение для обеих вложенных переменных, вы можете использовать цикл for
:
@echo off
set "myString=something"
set "result=4"
setlocal EnableDelayedExpansion
echo !myString!
for %%I in (!Result!) do echo !myString:~%%I!
endlocal
Это работает, потому что переменная for
%%I
расширена до применения замедленного расширения, поэтому тело цикла получает командную строку echo !myString:~4!
.
var full = window.location.host
//window.location.host is subdomain.domain.com
var parts = full.split('.')
var sub = parts[0]
var domain = parts[1]
var type = parts[2]
//sub is 'subdomain', 'domain', type is 'com'
var newUrl = 'http://' + domain + '.' + type + '/your/other/path/' + subDomain
window.open(newUrl);