用于重命名文件夹中文件的批处理命令

问题描述

只是想知道是否有人可以帮助我。通常,我很想找到一些代码,我需要一个代码来操作它,但是如果我必须从头开始,那太可怕了。

我是一名老师,希望所有文件都带有一致的标签,就像我必须将它们发送出去一样。

我想知道有没有一种方法可以编写批处理文件来执行以下操作:

我有一个主题文件夹,在每个主题文件夹中都有学生的名字,他们在一个文件夹中做的小册子,然后有一个.doc或.docx文件

我希望批处理文件文件重命名为Subject_Book#_Name.doc或.docx的文件

我的文档/主题/学生/图书1 / .doc

\Math A\Jim Book\Book 1 Addition\Addition Booklet.docx 
\Math A\Jim Book\Book 2 Subtraction\Subtraction Booklet.docx
Into
\Math A\Jim Book\Book 1 Addition\Math A_Addition Booklet_Jim Book.docx 
\Math A\Jim Book\Book 2 Subtraction\Math A_Subtraction Booklet_Jim Book.docx 
\Math A\Frank Sims\Book 1 Addition\Addition Booklet.docx 
\Math A\Frank Sims\Book 2 Subtraction\Subtraction Booklet.docx 
Into
\Math A\Frank Sims\Book 1 Addition\Math A_Addition Booklet_Frank Sims.docx 
\Math A\Frank Sims\Book 2 Subtraction\Math A_Subtraction Booklet_Frank Sims.docx 

现在,我不介意是否必须将bat文件复制到每个文件夹中,如果某个出色的人可以帮助我并将其保存在主主题文件夹中。

我确实在其他地方看到了类似的东西,但这仍然需要很多时间。

title Rename Bat
echo This bat must be in the folder that 
echo contains the files to be renamed.
echo Enter File Name
set /p old=
echo Enter New Name
set /p new=
ren "%old%" "%new%"
echo Done
pause```

解决方法

正如@jarmod在评论中提到的那样:在运行此操作之前,请保留原始文件的安全副本!您需要备份以防万一。

如果从主目录中运行它,则应该这样做。它将遍历子目录中的所有匹配文件,然后复制到当前(主)目录中。

@echo off
Setlocal enabledelayedexpansion

Set "Pattern=\"
Set "Replace=_"
set "RemovePath=!CD:%Pattern%=%Replace%!_"

For /r %%# in ("*.doc?") Do (
    Set "File=%%~f#"
    set "trimfile=!File:%Pattern%=%Replace%!"
    set "trimfile=!trimfile:%RemovePath%=% %!"

    REM If you remove "echo" from the next line,the copy will happen
    echo copy "!File!" "!trimfile!"
)

Pause

它的作用:

  1. 设置一些替换模式。也就是说,您要用下划线\替换反斜杠_
  2. 捕获当前目录,以便稍后可以将其替换为文件名。
  3. 使用完整路径遍历所有匹配的文件,并将路径中的\替换为_
  4. 从结果字符串中删除路径,因为我们只想使用下一级目录名称来启动新文件名。
  5. 回显删除echo关键字后将运行的命令。*

注意:最重要的行是用echo命令“禁用”的,以便您安全运行。如果感觉不错,请删除单词echo,然后进行copy操作。

,

一个过度劳累的老师!

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir\t w o"
FOR /f "delims=" %%a IN ( 
 'dir /s /b /a-d "%sourcedir%\*.doc" "%sourcedir%\*.docx" '
 ) DO for %%w in ("%%~dpa.") do for %%g in ("%%~dpw.") do for %%q in ("%%~dpg.") do ECHO REN "%%a" "%%~nxq_%%~na_%%~nxg%%~xa"
)

GOTO :EOF

您需要根据自己的情况更改sourcedir的设置。清单使用适合我系统的设置。

希腊语?

不,梵语。

首先,以dir基本形式/b列出/s,其中包含子目录/a-d,但没有两个文件掩码的匹配目录名。

处理结果列表,将默认定界符("delims=")设置为%%a,然后获取D的{​​{1}} riv和P ath({ {1}}并附加%%a,其结果为父目录名称,不带反斜杠。这似乎是文件名,因此%%~dpa是祖父母目录名称,而.是曾祖父母目录名称。

然后我们要做的就是将%%~dpw中的文件名重命名为ggp-%%~dpq ame和e %%a扩展名(N下划线原始文件的名称(X下划线祖父母-%%~nxq相同和e %%~na扩展名(N)e {{1 }}原始文件的扩展名(X

仅出于测试目的%%~nxg对所需的REN命令进行了处理。 验证命令正确无误后,将X更改为%%~xa,以实际重命名文件。

警告:这是一次只能执行的操作,除非您真的想要ECHO
然后是ECHO REN
之类的文件名 ...

要运行该批处理,您要做的就是执行REN,或者如果您将\Math A\Jim Book\Book 2 Subtraction\Math A_Math A_Subtraction Booklet_Jim Book_Jim Book.docx放在一个属于\Math A\Jim Book\Book 2 Subtraction\Math A_Math A_Math A_Subtraction Booklet_Jim Book_Jim Book_Jim Book.docx元素的目录中,则只需{{1} }就足够了。

如果将'd:\wherever\you put\thisbatch"设置为thisbatch.bat(即一个句号),则将从当前目录中的任何一个执行批处理。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...