【问题标题】:Attaching the foldername to all the all files in that particular folder将文件夹名称附加到该特定文件夹中的所有所有文件
【发布时间】:2011-07-01 18:43:44
【问题描述】:

一个目录中有 100 个文件夹,每个文件夹内都有一个 (filename).ini 文件。

我需要做的就是将父文件夹名称附加到 .ini 文件中,使其变为 (foldername)-(filename).txt 文件。

是否有可以执行此操作的批处理脚本?我是批处理文件的新手。因此,非常感谢任何帮助!

【问题讨论】:

  • 如果您使用 Windows,您可以从 this 博客条目开始,对于 linux,请参阅 this other one
  • 对于哪个操作系统你需要这个?

标签: scripting batch-file


【解决方案1】:
setlocal enabledelayedexpansion

for /R %%a in (*.ini) do (
  set relativepath=%%a
  set relativepath=!relativepath:%cd%\=!
  set newname=!relativepath:\=-!
  set newname=!newname:.ini=.txt!
  ren !relativepath! !newname!
)

endlocal

【讨论】:

  • +1,但如果你从根目录开始,它会失败,因为CD 解析为 `C:` 并附加斜杠
【解决方案2】:

这适用于任何文件夹和任何文件夹结构。

@echo off
setlocal enabledelayedexpansion
for /R %%a in (*.ini) do (
  set foldername=%%~pa
  set foldername=!foldername:\=_!
  echo ren "%%~fa" "(!foldername!)-%%~na.txt"
)

对于当前目录下的所有ini文件:从文件名中提取路径,使用~p修饰符;使用 := 修饰符将所有出现的反斜杠更改为下划线;最后重命名原来的ini文件。

测试后,去掉ECHO

有关详细信息,请参阅 HELP FORHELP SET

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-02
    • 2023-03-27
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多