【问题标题】:CMD Directory Listing Substring Variable LengthCMD 目录列表子字符串可变长度
【发布时间】:2014-07-14 01:23:23
【问题描述】:
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

我阅读了一些指南,但无法将它们导入 for /f "Tokens. 有可能这样做吗?如果有怎么办?

【问题讨论】:

  • 请完全按照'%s%' 的方式显示一些(比如大约6 个)示例行。几乎不可能预测您将使用的精确结构。如果是这种情况,请确保您提取的样本来自不同的目录,并且某些名称包含空格。

标签: windows cmd substring dir directory-listing


【解决方案1】:

这是一个批处理文件,它将列出当前目录的内容,将所有名称修剪为 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
)

【讨论】:

    猜你喜欢
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多