1

Я столкнулся с проблемой при попытке реализовать файл .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 ответа3

1

Подстроки работают только с обычными переменными, а не с мета-переменными.
Скопируйте содержимое в переменную, и поскольку это находится внутри (блок кода), вам нужно 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

Вы можете использовать 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

Спасибо за ваши ответы. Вот решение, которое сработало для меня:

@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!
)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .