【问题标题】:Rename a file and move a level up重命名文件并向上移动一个级别
【发布时间】:2012-09-19 16:26:37
【问题描述】:

我正在尝试编写一个脚本,该脚本将通过如下导演结构:

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"/../..

【问题讨论】:

  • 我将在几秒钟内更新我拥有的脚本......等等
  • @ngmiceli 我不知道如何将文件重命名为它的父文件夹

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


【解决方案1】:

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

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"
  )
)

【讨论】:

  • 非常感谢!你真棒
  • 这个很好用……我们可以给它添加一个条件,让它只处理没有子文件夹的 index.html 吗?我的意思是只重命名和移动其中没有任何子文件夹的 index.html(就像文件夹层次结构中的最后一个)?
猜你喜欢
  • 2011-03-20
  • 1970-01-01
  • 2018-09-18
  • 2016-05-11
  • 2014-12-19
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多