1

我需要在 Windows 8 上的批处理文件中的子目录之后重命名文件。例如,我需要将“C:\path\to\my\logs\machine0015\001.log”重命名为“C:\path\to \my\machine0015\machine0015.log"

我需要用最后一个目录名完全覆盖文件名。每个目录只有一个相关文件。

我搞不定。我已经很久没有进行任何 .bat 编程了;我已经设法完成了我需要做的其余事情,但最后一点让我很难过。我尝试过使用 FINDSTR 或 FOR 循环,但我似乎无法弄清楚如何从完整路径中提取最后一个子目录的名称(具有随机目录名称和路径深度)。

我被允许写一个临时文件,但是一个 exe 或 3rd-party 应用程序会被高度抛出,可能是不允许的。这需要在 Windows Vista/7/8 上工作,而不是 XP。

谢谢你的帮助,

奥利维尔

4

1 回答 1

2

尝试这个:

for %%a in ("C:\path\to\my\logs\machine0015\001.log") do for %%b in ("%%~dpa.") do (
ren "%%~fa" "%%~nb%%~xa"
move "%%~dpa%%~nb%%~xa" "%%~dpb"
)
于 2013-07-27T20:08:03.947 回答