微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用批处理脚本删除文件夹名称的前7个字符?

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

说下目录E:Movies2011

有几个文件夹,例如

[0603] Movie_1 [0708] Movie_2 [0811] Movie_3

等等..

命令提示符在重新启动后更

c#:将用于Windows命令提示符的unix shell使用的string转换

代码中使用disM

使用keytool安装安全证书

在使用Windows命令提示符时获取R的输出和完整命令历史logging

所以我想运行一个批处理脚本来删除date标记

Movie_1 Movie_2 Movie_3

等等

我正在使用Windows 8。

更改java符号链接

阅读Windows命令提示标准输出

从Windows命令提示符在许多文件上运行python

我无法打开manage.py

在Windows命令解释器的历史缓冲区的韵或理由?

RENAMER.CMD

@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) 。 那么!名字:〜7! 从前面七个字符。 设置/? 列出了你可以执行的其他一些操作。 大多数示例使用而不是 但是所有的字符串操作都可以同时使用。

更新回答评论

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

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

您可以使用增强型变量替换功能来执行此操作( 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以完成真正的工作。

既然你使用的是Win8,你可以使用PowerShell来实现这一点。 这是我曾经转过的

blah11-1 blah12-1 blah13-1

blah11 blah12 blah13

C: testing> dir -Directory | foreach {if($ .Name.Length -gt 6){$ fileName = $ .Name.SubString(0,6)} else {$ fileName = $ .Name}; rename-item -path $ .fullname -newname $ fileName; }

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐