批量查找文件

时间:2014-09-14 10:07:10

标签: batch-file cmd

这里我有一些代码可以找到所有.m4a文件并回显文件名减去前三个字符:

setlocal enabledelayedexpansion
for %%a in (*.m4a) do (
set oldName=%%a
set newName=!oldName:~3!
echo !newName!
)

但是,我只想对从1或0开始的文件执行此操作。我知道我可以使用

for %%a in (0*.m4a) do (

仅适用于从0开始的文件,但如何为1和0创建?谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

for %%a in (0*.m4a 1*.m4a) do (

只需将其包含在for

中即可

for对一组文件是动态的。如果新命名文件的新名称与for循环中的通配符表达式匹配,则可能会处理两次新命名文件。要避免它(如有必要),请使用dir命令检索静态列表并处理文件列表。

for /f "delims=" %%a in ('dir /b /a-d 0*.m4a 1*.m4a') do (
    set "oldName=%%a"
    set "newName=!oldName:~3!"
    ren "%%a" "!newName!"
)

答案 1 :(得分:0)

您的代码只需要很小的修改。需要注意的一点是,所有形式的DIR和FOR命令都匹配短文件名以及长文件名。

解决方案是通过findstr过滤器管理命令(如果需要)。

@echo off
setlocal enabledelayedexpansion
for %%a in (0*.m4a 1*.mp4) do (
   set oldName=%%a
   set newName=!oldName:~3!
   echo !newName!
)