【发布时间】:2020-11-07 08:17:50
【问题描述】:
我目前正在尝试重命名子文件夹中的文件,同时附加他的子文件夹名称、路径中紧邻上方的子文件夹名称和当前日期。 这是完整路径:
C:\USER_VALIDATION\INPUT\GRUPPO_FARLOCCO\AIX\merge.csv
我希望 merge.csv 变成 GRUPPO_FARLOCCO_AIX_17072020.csv 我需要在批处理文件和 FOR 中执行此操作,因为我需要在每个子文件夹中重复此重命名操作
C:\USER_VALIDATION\INPUT\.
到目前为止,我可以得到这个结果:AIX_17072020.csv 使用以下代码
FOR /D /R %%# in (*) DO (
PUSHD "%%#"
FOR %%@ in ("merge*") DO (
Echo Ren: ".\%%~n#\%%@" "%%~n#_%date:/=%%%~x@"
Ren "%%@" "%%~n#_%date:/=%%%~x@"
)
POPD
)
Pause&Exit
现在,我可以通过 %%~p@ 获得\USER_VALIDATION\INPUT\GRUPPO_FARLOCCO\AIX\,但我不能只获得最后两个文件夹。我认为删除前 23 个字符并将剩余的两个“”替换为“_”可能是有效的,但我不能这样做。
有人可以帮忙吗?
谢谢!
【问题讨论】:
-
如果您完全理解该链接,您应该能够修改该代码以获取父文件夹和祖父文件夹。
-
@Squashman 我可以使用 " for %%I in (..) 获取正确的文件夹名称,但在变量为空后立即设置 ParentFolderName=%%~nI%%~xI"当我尝试打印它时打开我的回声),如果我将 %%~nI%%~xI 放在我的 ren 前面,我什么也得不到。我想这是因为我把它放在了我的第二个 FOR 上。能给点建议吗?
标签: windows batch-file