所以,以前我在这里是因为我想根据我创建的东西重命名我的文件,我最终做了这件事,这很简单,但是现在,我还有另外一件事,我认为它是'更好,所以我有这个代码:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
chcp 65001
SET "sourcedir=C:\Users\leandro.batista\Desktop\SAMPLES RENAMER"
SET "destdir=C:\Users\leandro.batista\Desktop\SAMPLES RENAMER\BACKUP"
FOR /f "delims=()" %%a IN ('dir /b /a-d "%sourcedir%\*.pdf" ') DO (
REN "%%a" "%sourcedir%\*.pdf"
PAUSE
)
我尝试使用文件名括号内的内容重命名文件,例如:
输入:
File Name: blablabla(exampleIwantToExtract)
输出:
File Name: (exampleIwantToExtract)
当我运行bat时,它说有一个语法错误,我不太清楚为什么,我有一个想法,它可能是REN
代码,或者更好,它必须是{{1代码。
答案 0 :(得分:2)
如果你使用delims
,你还应该使用正确的token
(2
作为你的示例文件名。如果你没有定义它,它默认为{{ 1}},它会给你1
)
但是要重命名文件,还需要全名。最好的方法是使用两个嵌套的blablabla
循环。外部循环使用普通for
来获取(旧)文件名,使用内部for
循环来标记文件名以获取新名称:
for /f
for %%a in ("%sourcedir%\*.pdf") do (
for /f "tokens=2 delims=()" %%b in ("%%~na") do (
ECHO move "%%~fa" "%destdir%\(%%b)%%~xa"
)
)
为您提供完整的合格文件名(包括驱动器和路径)
%%~fa
仅为您提供文件名称
%%~na
为您提供了文件的扩展名(当然,您只需键入%%~xa
即可
但.pdf
为您提供了额外的灵活性)
注意:%%~xa
不支持目标路径。因此,我改为使用ren
。