2017-04-19 74 views
1

我需要一个批处理文件来删除同一目录中的多个文件名中的某个部分。删除部分的文件名

例子: 我有超过80000的标题像这样的文件:

Test Title, The - Conspiracy.zip 

我需要“在”文件名中要走的标题像这样删除:

Test Title - Conspiracy.zip 

PS,我只需要这个批处理文件!

任何帮助非常感谢! THANX !!!

回答

-1

你可以像循环一样循环访问文件目录的内容。 Batch script loop

然后,当你循环播放时,可以替换文件名的内容。看看这个:String replacement in batch file

对不起,没有更具体的批处理脚本是不是我的东西。但是这个逻辑应该证明至少是有帮助的。有人发布了更好的东西。

+0

我觉得OP想重命名文件,而不是改变文件中的文本。 – TinkerTenorSoftwareGuy

+1

你说得对。最终文件将从文件名中间删除“,The”,并在开头添加“The”。 –

+1

感谢您的跟进。因为在批处理中没有真正的工作,我想我会解决它。有时候人们对这里太关键了,我只是尽可能地提供一个答案。 –

0

如果您可以使用Unix命令shell,则可以在循环中使用mv命令。

你可以下载Cygwin的或Git的Bash或如果您有Windows 10,你可以做在命令行这一权利(假设你已经更新):

创建一个文件,这样

#!/bin/bash 
for file in *.zip 
do 
    removedPart=", The" 
    mv "${file}" "${file/removedPart/}" 
done 

您可能需要首先在单个文件上测试该命令,以确保它能做到您想要的。即

file=Test Title, The - Conspiracy.zip 
removedPart=", The" 
mv "${file}" "${file/removedPart/}" 
+0

这是假设你想重命名文件,而不是改变文件内的文本。这对我来说最有意义,考虑到这些是zip文件。 – TinkerTenorSoftwareGuy

+0

实际上这里有大约75种不同的扩展名,但只是我可以使用wildacard来照顾它们。 –

2

我找到了我需要使用的东西,并且感谢大家的快速回复和帮助!

@echo off &setlocal 
set currentDirectory="%CD%" 
for /f "delims=" %%a in ('dir /b /a-d *, The*.*') do (
set "fname=%%~a" 
setlocal enabledelayedexpansion 
set "nname=!fname:, The=!" 
ren "!fname!" "!nname!" 
endlocal 
)