我们如何在批处理文件中使用当前目录路径(%~dp0)和 'ren' 命令?

How can we use the current directory path(%~dp0) with 'ren' command in a batch file?

我想重命名子目录中的文件,文件名的已知部分是“.log”。 当我尝试下面的操作时

ren subdirectory\*.log* file2.txt

ren .\subdirectory\*.log* file2.txt

我收到错误:The syntax of the command is incorrect. 我这里有两个问题:

  1. 我是否总是需要在 ren 命令中为文件 1 提供完整路径?

  2. 如果是,那么如果我不想硬编码,我们如何给出完整路径?

我知道我们可以使用 '%~dp0' 来获取当前目录路径,但我不确定如何将它与 'ren' 一起使用。

如果您还想使用相对路径 / 在 windows 中不正确,请改用 \

如果要搜索哪个相对路径是正确的,使用命令dir

示例:

dir .\
dir ..\..\
dir \
dir .
dir ..

更新

ren subdirectory\*.log* file2.txt

您的重命名掩码似乎危险

不知道能不能把很多带掩码通配符的文件重命名成同一个名字。我认为它会将每个文件覆盖为一个文件,或者至少它会连接成单个文件但不确定。 如果您想查看重命名掩码的一些示例,请参见:How does the Windows RENAME command interpret wildcards?

更新

小批量查看您的面具的实际效果:

@echo off

md Somefolder
echo some content into _file1.log>_file1.log
echo some content into _file2.log>_file2.log
echo some content into _file3.log>_file3.log
echo some content into _file999.log>_file999.log

dir Somefolder
pause>NUL

REM Correct
ren Somefolder\_file???.log _file???.txt
dir Somefolder
pause>NUL

REM Incorrect because it override _file???.txt into one _file1.log
ren Somefolder\_file???.txt _file1.log
dir Somefolder

pause

添加引号有效:

ren  "subdirectory\*.log*"  file2.txt

ren  ".\subdirectory\*.log*"  file2.txt

谢谢wOxxOm

删除具有相对路径的所有文件 *.log 的扩展名

rename ".\folder1\subfolder1\*.log" *.