制作批处理文件(我的第一个)。在它结束时,我想重命名一个文件以匹配它所在的文件夹。我知道REN是如何工作的,但不知道如何让它使用文件夹名称。我将从包含该文件的文件夹中运行bat。另外,有没有办法确保文件名全是小写?尚未确定我是否还需要它。
答案 0 :(得分:0)
请参阅In a batch file, how would I find the specific folder it is in without the rest of its directory?上的答案,了解如何确定批处理文件所在的文件夹名称。
每条评论更新:
如果您需要帮助来了解其工作原理,可以参考帮助文档和搜索。在命令提示符下输入cmd /?
和for /?
等内容,以获取您需要更多帮助的所有命令。
答案 1 :(得分:0)
@ECHO Off
SETLOCAL
PUSHD "U:\SoMe DiRectORYnamE"
ECHO %CD%
FOR /f "delims=" %%a IN ("%cd%") DO SET "mydir=%%~nxa"
ECHO Current directory is %mydir%
FOR %%x IN (DOC jPg Md5 xYz ZYX) DO COPY /y NUL FilenamE.%%x >nul
DIR
ECHO --------------------------------------------------------
CALL :lower mydir
ECHO new filename should be %mydir%.*
FOR %%x IN (doc jpg md5) DO REN *.%%x "%mydir%.%%x"
dir
POPD
GOTO :EOF
:lower
FOR %%a IN (a b c d e f g h i j k l m n o p q r s t u v w x y z) DO CALL SET "%1=%%%1:%%a=%%a%%%"
GOTO :EOF
cd
mydir
设置为字符串cd
中目录名的名称和扩展名(~nx)mydir
(包含目录名)rename
ren
中未提及的文件名未更改。 "..."
语法确保保留目标名称中的空格。子程序调用批处理魔法(类似黑魔法,但更黑)转换为小写。
请注意*.%%x
命令中的ren
语法将重命名" all"在任何一种情况下,具有匹配扩展的文件。 SInce no 2文件可以具有相同的名称,只有遇到的第一个名称将被重命名,如果有多个文件具有匹配的扩展名,则会产生错误消息。如果只有一个,它将被重命名。
上述批次中的大部分都是开销,并且可能会让初学者感到困惑。
以下是三个活动行,假设当前目录包含三个目标文件,它们应该可以重命名文件。
FOR /f "delims=" %%a IN ("%cd%") DO SET "indir=%%~nxa"
FOR %%a IN (a b c d e f g h i j k l m n o p q r s t u v w x y z) DO CALL SET "indir=%%indir:%%a=%%a%%%"
FOR %%x IN (doc jpg md5) DO ECHO(REN *.%%x "%mydir%.%%x"
为了测试目的,所需的REN命令仅为ECHO
。 在您确认命令正确后,将ECHO(REN
更改为REN
以实际重命名文件。
答案 2 :(得分:0)
for %%a in ("%cd%") do ren "filename.ext" "%%~Na"
%cd%
是当前文件夹的完整路径,即C:\current\folder\name
。在FOR命令中插入此类路径时,可以使用参数修饰符,其中%%~N
是路径中的姓氏,即name
编辑:已添加示例
C:\Users\Antonio\Documents\ASMB\test\Thisisthefoldernamethatsreallylong
>dir /B
AnyName.mkv
test.bat
C:\Users\Antonio\Documents\ASMB\test\Thisisthefoldernamethatsreallylong
>type test.bat
@echo off
for %%a in ("%cd%") do ren "*.mkv" "%%~Na.mkv"
C:\Users\Antonio\Documents\ASMB\test\Thisisthefoldernamethatsreallylong
>test
C:\Users\Antonio\Documents\ASMB\test\Thisisthefoldernamethatsreallylong
>dir /B
test.bat
Thisisthefoldernamethatsreallylong.mkv