我想通过将文件名剥离到前 16 个字符来重命名目录中的一堆文件,但是在批处理文件中使用 forfiles 命令时,我无法弄清楚如何获取 @FNAME 的子字符串。
帮助将不胜感激。
谢谢
罗兰
我想通过将文件名剥离到前 16 个字符来重命名目录中的一堆文件,但是在批处理文件中使用 forfiles 命令时,我无法弄清楚如何获取 @FNAME 的子字符串。
帮助将不胜感激。
谢谢
罗兰
forfiles
这样做很可能会非常棘手,因为我认为您不能在同一批次中设置和使用变量,因为您为每个文件 () 生成了一个新的cmd "cmd /c command"
。
for
但是,使用简单的循环可以轻松实现相同的功能。
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir C:\yourdir /s /b') do (
set file=%%~na
set ext=%%~xa
set new=!file:~0,16!
ren %%a !new!!ext!
)
这也将通过所有子目录递归。如果您只想要您选择的文件夹,请/s
从dir
命令中删除 。
另外,因为您只删除了文件名,所以我已经这样做了,所以它会在之后重新附加文件扩展名,否则扩展名中的字符将计入 16 个字符的限制。
您可以使用第二个 bat 文件并传递@fname
like%1
并在此处创建子字符串。
Forfiles /m *.* /c "cmd /c call second.bat @fname"
In second.bat
Set v=%1
Set substring=%v:~1,5%
Echo %substring%