关于:如何为文件夹中的所有文件和文件夹添加前缀?(Windows)
我正在尝试创建一个 .bat 文件,它将使用项目编号前缀重命名预定义的文件夹结构,例如项目名称/管理员 - 变为 - 7000-01 项目名称/7000-01 管理员。以下是我目前所拥有的:
@Echo off
pushd
for /d %%g in (*) do ren "%%g" "7000-01 %%g"
它只适用于顶层,但我希望它重命名所有子文件夹(包括上面例如“管理员”级别以下的子文件夹)。
我在这里读到——https://ss64.com/nt/for_d.html使用for /d /r
应该可以递归重命名所有子文件夹,但我无法让它工作。
仅供参考pushd
,使用 .bat 名称保持不变。
答案1
你离答案很近了!正确命令是:
for /r /d %%g in (*) do ren "%%g" "7000-01 %%~ng"
完整解释:
正如您提到的,您必须使用for /d /r
递归方式工作。(https://ss64.com/nt/for_d.html)
ren
检查or命令的语法rename
表明需要非常具体的语法:
>ren /?
Renames a file or files.
RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.
Note that you cannot specify a new drive or path for your destination file.
for 循环内的原始命令正在评估ren "FULL_PATH" "FULL_PATH"
,实际上应该是ren "FULL_PATH" "SIMPLE_FILE_NAME"
要获取不带扩展名或路径的文件名,请使用~n
变量 (https://ss64.com/nt/syntax-args.html)