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