重命名文件并向上移动级别

时间:2012-09-19 16:26:38

标签: batch-file batch-processing batch-rename

我正在尝试编写一个脚本,它将通过像:

这样的导演结构
school/admission/english->index.html

它应该将index.html重命名为english.html,这是它的父文件夹,并将其向上移动一级,以便结果如下

school/admission/english.html

对于该文件夹结构中名称index.html的所有文件,应重复此相同的过程。任何有关如何处理此问题的帮助将不胜感激。

要查找我拥有的所有index.html文件:

   @echo off
for /r %%i in (index.html) do echo %%~ti %%~zi %%i

将.html文件向上移动一级:

for /r %x in (*.html) do move "%x" "%x"/../..

1 个答案:

答案 0 :(得分:2)

这是一个相当简单的本机解决方案,可以从命令行运行

for /r %F in (index.html) do @for /f "eol=: delims=" %A in ("%F\..") do @if exist "%F" move "%F" "%F\..\..\%~nA%~xF"


编辑以回应评论中的其他问题

如果您只想处理文件夹层次结构的叶节点,我认为最好使用批处理脚本:

@echo off
for /r %%F in (index.html) do (
  if exist "%%F" (
    set "subFolder="
    for /d %%A in ("%%~dpF\*") do set subFolder=1
    if not defined subFolder for /f "eol=: delims=" %%A in ("%%F\..") do move "%%F" "%%F\..\..\%%~nA%%~xF"
  )
)