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

Variables 批量删除特定字符后的所有内容,variables,batch-file,cmd,substring,Variables,Batch File,Cmd,Substring,我列出了我的文件,这些文件的所有者拥有这些文件,并且扩展名是MyFolder中的mkv。我想删除特定字符/单词后的所有内容。我写的代码。但它似乎不起作用 首先,有可能做到吗?如果是,我的代码有什么问题 你提出了与我将在你的另一个问题上发布的相同的解决方案,但我认为你遗漏了一些东西。以STRING=%%结尾的行缺少另一个%%,而行%%aa:%\u endbit%%=%%,我不确定它是否可以直接作用于for循环中的变量,您需要先将其存储在另一个变量中,并且可能需要使用进行一些扩展字符 以下是我所做的

我列出了我的文件,这些文件的所有者拥有这些文件,并且扩展名是MyFolder中的mkv。我想删除特定字符/单词后的所有内容。我写的代码。但它似乎不起作用


首先,有可能做到吗?如果是,我的代码有什么问题

你提出了与我将在你的另一个问题上发布的相同的解决方案,但我认为你遗漏了一些东西。以
STRING=%%
结尾的行缺少另一个
%%
,而行
%%aa:%\u endbit%%=%%
,我不确定它是否可以直接作用于
for
循环中的变量,您需要先将其存储在另一个变量中,并且可能需要使用
进行一些扩展字符

以下是我所做的似乎有效的测试,就像在一个包含三个文件的文件夹中进行测试一样,使用
E0
作为截止字符串删除文件名的结尾:

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" 

谢谢,我做了一些改变,现在它工作了。是否可以将E0更改为E0*。我的意思是它可能是E04 E08 E09 E19*是可变的。我想不出一个方法,除非你在字符串
S01E
之后什么也不留下,或者开始为Windows引入一个像
sed
这样的外部程序。语法
%var:*str1=%
只支持开头带有星号,无法将
*
添加到结尾,这就是为什么我们必须执行这样的模式:获取我们不想要的位,存储它,然后将其用作要删除的位。(顺便说一句,在PowerShell中这整件事会容易得多)。
SETLOCAL ENABLEDELAYEDEXPANSION
@echo off

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