批量删除特定字符后的所有内容

时间:2014-07-14 11:34:33

标签: variables batch-file cmd substring

SETLOCAL ENABLEDELAYEDEXPANSION
set "s=DIR D:\MyFolder /S /Q ^|FIND /i "Owner" ^|findstr /m /i "\.mkv$""
for /f "Tokens=5,6*" %%a in ('%s%') do (
SET _endbit=%%aa:*STRING=%
CALL SET _result=%%aa:%_endbit%=%%
>>%tmp%\list.txt echo %_result% %%b %%c
)
wscript "C:\my.vbs" 

我列出了所有者拥有的文件,并且从MyFolder扩展了mkv。我想删除特定字符/单词后的所有内容。我写了那段代码。但似乎没有用。

首先,是否可以这样做?如果是这样我的代码有什么问题?

1 个答案:

答案 0 :(得分:0)

你提出了我要在你的另一个问题上发布的相同解决方案 - 但我认为你错过了一些东西。结尾STRING=%的行在结尾处缺少另一个%,而行%%aa:%_endbit%=%%,我不确定它是否可以直接处理来自for的变量循环,你需要先将它存储在另一个变量中,你可能也需要使用!个字符进行一些扩展。

这里有我似乎有用的东西,就像在包含三个文件的文件夹中进行测试一样,使用E0作为截止字符串删除文件名的末尾:

SETLOCAL ENABLEDELAYEDEXPANSION
@echo off

for %%f in (*.mkv) do (
    set FULLNAME=%%f
    set ENDTEXT=!FULLNAME:*E0=!
    call set TRIMMEDNAME=%%FULLNAME:!ENDTEXT!=%%
    echo !TRIMMEDNAME!
)