Положите значение переменной в качестве параметра манипуляции с строкой [duplicate]

Если вы установили более высокую версию Cuda, просто запустите установщик Cuda с более низкой версией, он автоматически удалит установленную версию, если ее не будет той же версии. В моем случае в Windows 10 Cuda9.2 был удален установщиком Cuda9.0. Спасибо!

0
задан Chris Martin 13 January 2016 в 03:44
поделиться

2 ответа

Для этого вам нужно отсроченное расширение.

Вот понятие:

@echo off
setlocal EnableDelayedExpansion

set "mystring=mousetail"
set result=5
echo %mystring%
echo !mystring:~%result%!

Должно быть легко реализовано в вашем коде.

2
ответ дан Stephan 3 September 2018 в 17:50
поделиться

Альтернативой без отложенного расширения является использование команды 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!.

0
ответ дан aschipfl 3 September 2018 в 17:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: