Batch file 基于文本文件中的部分名称删除文件
我想删除Batch file 基于文本文件中的部分名称删除文件,batch-file,Batch File,我想删除C:\temp中的所有.mp3文件,这些文件以txt文件Mytxtfile.txt中定义的文件开头 例如,C:\temp包含: AliciaEffort.mp3 AliciaKlay.mp3 AliciaLow.mp3 Emanlw.mp3 EmanDown.mp3 JonKLa.mp3 JohnHd.mp3 AliciaEffor Emoanlw GrezyK JohnHd etc. Mytxtfile.txt包含: AliciaEffort.mp3 AliciaKlay.mp3
C:\temp
中的所有.mp3
文件,这些文件以txt文件Mytxtfile.txt
中定义的文件开头
例如,C:\temp
包含:
AliciaEffort.mp3
AliciaKlay.mp3
AliciaLow.mp3
Emanlw.mp3
EmanDown.mp3
JonKLa.mp3
JohnHd.mp3
AliciaEffor
Emoanlw
GrezyK
JohnHd
etc.
Mytxtfile.txt
包含:
AliciaEffort.mp3
AliciaKlay.mp3
AliciaLow.mp3
Emanlw.mp3
EmanDown.mp3
JonKLa.mp3
JohnHd.mp3
AliciaEffor
Emoanlw
GrezyK
JohnHd
etc.
我的代码:
set WORKDIR="C:\temp"
set LISTFILES="C:\Users\StevenRg\Desktop\mytxtfile.txt"
pushd %WORKDIR%
for %%G in (*) do (
for /f "tokens=* usebackq" %%H in (%LISTFILES%) do (
if %%G==%%H del /p "%%G"
)
)
popd
但是它不起作用。。。
有什么想法吗?你可以这样做:
@Echo关闭
设置“WorkDir=C:\temp”
设置“ListFile=%UserProfile%\Desktop\mytxtfile.txt”
CD/D“%WorkDir%”2>Nul | |退出/B
如果不存在“%ListFile%”退出/B
对于/F“UseBackQ Delims=“%%A In”(“%ListFile%”)Do Del/A/F/Q“%%A*.mp3”2>Nul
或者,将最后一行替换为以下内容可能更安全:
For/F Delims^=^EOL^=%%A In('Type“%ListFile%”)Do Del/A/F/Q“%%~A*.mp3”2>Nul
你能解释一下它以什么方式不起作用吗?因为我在mytxtfile.txt上定义了一些单词。我想匹配这些单词,然后在c:\temp every.mp3上删除与mytxtfile.txt上的单词匹配的单词。我应该在某个地方添加正则表达式?为什么不在文件中每行定义一个正则表达式?如果您确实这样做了,请编辑您的问题以相应的格式。我编辑此^^将您的文本文件转换为批处理文件,使用列模式(在记事本++的情况下为Alt+Shift+Arrow),这将允许您将del
放在每一行的前面,并将*.mp3
放在最后一行。最后一行以何种方式更安全(除了伤残代码> EOL )?您在考虑字符编码吗?@ ASCHIPFL,认为文本文件可能不是带有CRLF行结尾的ASCII文本。