1

我确实做了研究,但我无法弄清楚,对不起!谷歌只能帮我添加字符,不能删除字符...

在目录下说E:\Movies\2011\

有几个文件夹,例如

[0603] Movie_1

[0708] Movie_2

[0811] Movie_3

等等..

所以我想运行一个批处理脚本来删除日期标签,即

Movie_1

Movie_2

Movie_3

等等

我正在使用 Windows 8。

4

3 回答 3

3

重命名命令

@echo off
setlocal enableextensions enabledelayedexpansion
for %%i in (*) do (set name=%%i && ren "!name!" "!name:~7!")
endlocal

解释:

setlocal / endlocal的东西只是确保无论您的默认命令行设置是什么,脚本都能正常工作。如果您确保默认启用命令扩展和延迟扩展,或者使用cmd /e:on /v:on启动命令提示符,则这些行是可选的。

for语句是事情的核心。它使用(*)选择目录中的每个文件。如果您只想更改具有某些扩展名的文件,您可以使用不同的模式,例如(*.avi)。然后!name:~7! 去掉前面的七个字符。 放 /?列出了您可以执行的其他一些操作。大多数示例使用%而不是! 但所有字符串操作都适用于两者。

更新以回答评论

您可以在 ! 中执行 % 替换 替代。

@echo off
setlocal enableextensions enabledelayedexpansion
set numtrim=7
for %%i in (*) do (set name=%%i && ren "!name!" "!name:~%numtrim%!")
endlocal
于 2013-03-11T23:39:27.933 回答
0

由于您使用的是 Win8,因此您也可以使用 powershell 来完成此操作。这是我以前转的

blah11-1 blah12-1 blah13-1

废话11 废话12 废话13

C:\testing> dir -目录 | foreach { if($ .Name.Length -gt 6){ $fileName = $ .Name.SubString(0,6)} else { $fileName = $ .Name }; 重命名项目 -path $ .fullname -newname $fileName; }

现在这只是我在 powershell 命令行上运行的内容,但可以将其移动到脚本中以使其更具可重用性。

于 2013-03-12T01:05:44.313 回答
0

您可以使用增强的变量替换功能来执行此操作(SET /?仅供参考):

@echo off
setlocal
for /d %%i in (*) do call :rename %%i
goto :eof
:rename
set CURDIR=%1
echo ren "%CURDIR%" "%CURDIR:~7%"

魔法发生在%CURDIR:~7%,这意味着“ 的值%CURDIR%,但跳过前 7 个字符”。

上面的批处理文件没有重命名任何东西(它只是打印重命名命令),所以你可以先做一个空运行,然后删除最后一个echo来完成真正的工作。

于 2013-03-11T23:30:38.490 回答