CMD目录列表子串可变长度

时间:2014-07-14 01:23:23

标签: windows cmd substring dir directory-listing

setlocal
set "s=DIR D:\MyFolder /S /Q ^|FIND /i "Owner" ^|FIND /v /i "sample" ^|findstr /m /i "\.mkv$""
for /f "Tokens=5,6*" %%a in ('%s%') do >>%tmp%\list.txt echo %%a %%b %%c
wscript "C:\my.vbs" 
嘿伙计们,我有这个代码。从MyFolder获取所有者拥有的mkv文件。并通过VBS显示它们。

这些是我的档案。

The.Leftovers.S01E02.720p.BLABLABLA
Falling.Skies.S04E03.720p.BLABLABLA

我想将长度限制为20个字母。或者在720p之前删除

The.Leftovers.S01E02
Falling.Skies.S04E03

我阅读了一些指南,但我无法将它们导入到/ f“令牌中。 有可能吗?如果是这样的话?

1 个答案:

答案 0 :(得分:0)

这是一个批处理文件,它将列出当前目录的内容,将所有名称修剪为20个字符。

SETLOCAL ENABLEDELAYEDEXPANSION
@echo off

for %%f in (*) do (
    set TMPF=%%f
    echo !TMPF:~0,20!

)

要获得更多帮助,请运行SET /?以获取有关~0,20语法和示例的帮助,并CMD /?了解ENABLEDELAYEDEXPANSION执行的操作以及!!的功能。

我无法确定这将如何适合您的代码,但可能类似于:

SETLOCAL ENABLEDELAYEDEXPANSION
for /f "Tokens=5,6*" %%a in ('%s%') do (
    set TMPA=%%a
    >>%tmp%\list.txt echo !TMPA:~0,20! %%b %%c
)