Подстрока переменной с двумя процентами в файле .bat
421
NicoFC34
Я столкнулся с проблемой при попытке реализовать файл .bat и не нашел ответа. Я пытаюсь отобразить все имена папок без системного пути.
Я пробовал что-то подобное, но это не работает.
@echo off set back=%cd% for /d %%I in (C:\test\test*) do ( cd %%I 2>&1 >nul echo %%~nxI:~10,5 ) cd %back% 2>&1 >nul
У вас есть решение, пожалуйста? :-)
3 ответа на вопрос
1
LotPings
Подстроки работают только с обычными переменными, а не с мета-переменными. Скопируйте содержимое в переменную, и, поскольку это внутри (блока кода), вам нужно DelayedExpansion Используя метод псевдо-вызова:
:: Q:\Test\2018\07\26\SU_1345000.cmd @echo off PushD . for /d %%I in (A:\test\test*) do ( Set "Dir=%%I" Call echo %%Dir:~10,5%% ) PopD
В дереве, как это:
> tree └───test ├───test1 ├───test2 └───test3
это возвращает
> Q:\Test\2018\07\26\SU_1345000.cmd st1 st2 st3
Возможно, ваше смещение было неверным.
0
chloesoe
Вы могли бы использовать dir /ad /b C:\test\test*
@echo off set back=%cd% for /d %%I in (C:\test\test*) do ( dir /ad /b %%I ) cd %back% 2>&1 >nul
Этот скрипт будет печатать все имена папок в папках C:\test\test*
0
NicoFC34
Спасибо за ваши ответы. Вот решение, которое сработало для меня:
@echo off setlocal EnableDelayedExpansion for /d %%I in (C:\test\testV*) do ( set current_folder=%%I set test_version=!current_folder:~12,6! set test_version=!test_version:_=.! echo !current_folder! echo !test_version! )