|
|
我希望能实现将文件所在目录名和连接符加在文件名前的功能,但是实际处理中处理的次数比文件多,比如文件夹下有3个文件(分别为1.ogg,2.ogg,3.ogg),批处理应该处理3次,但是实际上处理了4次,有个文件被加了2次的目录名和连接符,如图:
我想知道我的批处理哪里写错了,应该要怎么改?
另外如果增加一个判断文件名中包含目录名,如果包含则不执行改名,这个该怎么改呢?谢谢!
以下是我写的批处理。- @ECHO OFF
- setlocal enabledelayedexpansion
- ECHO 本批处理文件用来将文件所在目录名和连接符加在文件名前。
- :: 将文件所在目录名和连接符加在文件名前。
- ECHO=
- ECHO 本批处理默认设置为将ogg文件所在目录名和连接符a加在文件名前。
- ECHO 本批处理将依次分步执行以下命令:
- ECHO 1、设置文件扩展名。
- ECHO 2、设置连接符。
- ECHO 3、开始重命名,公式为:新文件名=目录名+连接符+原文件名。
- ECHO=
- SET /p All=是否使用默认设置?(Y/N):
- IF %All% EQU Y (
- GOTO AllY
- ) ELSE (
- GOTO AllN
- )
- :AllY
- SET Extension=ogg
- SET Connector=a
- SET RenCommand=Y
- GOTO Start
- :AllN
- SET Extension=""
- SET Connector=""
- SET RenCommand=""
- GOTO Start
- :Start
- :: 1、设置文件扩展名。
- IF %All% NEQ Y (
- SET /p Extension=请输入文件扩展名:
- )
- :: IF "%Extension%" EQU "ogg" (
- :: )
- :: 2、设置连接符。
- IF %All% NEQ Y (
- SET /p Connector=请输入连接符:
- )
- :: IF "%Connector%" EQU "a" (
- :: )
- :: 3、开始重命名,公式为:新文件名=目录名+连接符+原文件名。
- IF %All% NEQ Y (
- SET /p RenCommand=是否开始重命名?(Y/N):
- )
- IF %RenCommand% EQU Y (
- FOR /R %%a IN (*.%Extension%) DO (
- FOR %%b IN ("%%a\..") DO (
- ECHO 重命名公式为:新文件名=目录名+连接符+原文件名。
- ECHO 重命名路径:%%a
- REN "%%a" "%%~nxb%Connector%%%~nxa"
- ECHO ----------------------------------------------------------------------
- )
- )
- )
- PAUSE
复制代码 |
评分
-
查看全部评分
|