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

时间:2015-09-08 16:26:57

标签: windows batch-file cmd relative-path batch-rename

我想重命名子目录中存在的文件,文件名的已知部分是' .log '。 当我尝试下面的内容时

ren subdirectory\*.log* file2.txt

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

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

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

  2. 如果是,那么如果我不想硬编码,我怎么能给出完整的路径呢?

  3. 我知道我们可以使用' %~dp0 '获取当前目录路径,但我不确定如何使用' ren'。

3 个答案:

答案 0 :(得分:1)

如果您想使用相对路径,/在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

答案 1 :(得分:1)

添加引号将起作用:

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

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

谢谢wOxxOm

答案 2 :(得分:0)

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

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