在 .bat 文件中用 2% 对变量进行子字符串处理

在 .bat 文件中用 2% 对变量进行子字符串处理

我在尝试实现 .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

您有解决方案吗?:-)

答案1

子字符串只适用于普通变量,不适用于元变量。
将内容复制到 var,因为这位于(代码块)内,所以您需要延缓扩张
使用伪调用方法:

:: 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

可能你的偏移不正确。

答案2

你可以使用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*

答案3

谢谢你的回答。以下是对我有用的解决方案:

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

相关内容