batch-file - 批量重命名

标签 batch-file rename

我想将文件重命名为其父文件夹示例:

D:\Books\PDF\medical\001\99.jpg
D:\Books\PDF\medical\002\gg.jpg

成为:

D:\Books\PDF\medical\001\001.jpg
D:\Books\PDF\medical\002\002.jpg

我知道这个问题之前被问过,但我无法理解。

如果可能的话我想把它放在D:\Books\PDF\medical\

最佳答案

如何做:

这很简单:

1) 在“D:\Books\PDF\medical\”中创建一个名为“myrename.bat”的新文本文件。

2)将以下内容粘贴到其中:

@echo off
pushd %~p1
for %%d in ("%CD%") do set "parentdir=%%~nd"
popd
move /Y %1 D:\Books\PDF\medical\"%parentdir%%~x1" > nul

3) 从“D:\Books\PDF\medical\”中,运行批处理文件,其第一个参数是名称 要重命名的文件的名称。例如,您将在示例中对文件“gg.jpg”执行以下操作:

myrename 002\gg.jpg

这会将文件“99.jpg”重命名为“002.jpg”并将其移动到“D:\Books\PDF\medical\”。

它是如何工作的

在批处理中,%~p1 返回第一个参数的相对路径,它会删除文件夹。例如,如果您运行 myrename Bla\002\gg.jpg%~p1 将是 Bla\002pushd 然后进入该目录。

for 循环应该从当前路径中提取最后一个文件夹,由 %CD% 给出,以及 %CD% 的值code> 被分配给 %%d。表达式%~nd用于丢弃除最后一个文件夹名称之外的所有内容,获得的结果存储在变量parentdir中。 popd 然后返回到原始目录。

move 命令既可以重命名文件,也可以移动它。新文件名是 parentdir 的值和扩展名 %~x1,这是原始输入文件的扩展名。

希望这有帮助。

关于batch-file - 批量重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12041902/

相关文章:

java - 如何在 Windows 操作系统中使用 Runtime.exex() 从单个类的单独命令窗口中调用多个 java 程序?

batch-file - 批处理 : Simply Syntax Error : Goto was unexpected at this time

php - 将 $name 值编辑为 $name2

linux - 如何更改我的 OpenSUSE Linux 计算机的名称?

c# - 一次又一次地以相同的方式重命名文件

batch-file - 以编程方式仅删除 "%~dp0"返回的路径中的最后一个斜杠

在 R 中按模式重命名列

visual-studio - 是否有用于在解决方案资源管理器中重命名文件的 Visual Studio 键盘快捷键?

visual-studio-2010 - 重命名 dbml 后将 Linq 更改为 SQL DataContext 类名

batch-file - BATCH - 使用 %20 替换文件名中的空格以进行curl