Batch file 删除“;0“;从文件名的开头开始

Batch file 删除“;0“;从文件名的开头开始,batch-file,Batch File,一点关于我要解决的问题的背景知识。我们有每天创建的文件,这些文件被转储到为当天创建的文件夹中。其中一些文件的前面有一个0。例如,0123456。 我正在尝试生成一个批处理脚本,用于从这些文件中删除0。我想到了这个: @echo off ECHO Checking HNS for Pics that start with a "0" For /R "D:\Shared\Quality Photos\TEST2\TEST\" %%a in (0*.*) do ren "%%a" " *.*"

一点关于我要解决的问题的背景知识。我们有每天创建的文件,这些文件被转储到为当天创建的文件夹中。其中一些文件的前面有一个0。例如,0123456。 我正在尝试生成一个批处理脚本,用于从这些文件中删除0。我想到了这个:

@echo off

ECHO Checking HNS for Pics that start with a "0"

For /R "D:\Shared\Quality Photos\TEST2\TEST\" %%a in (0*.*) do ren "%%a" " *.*"
它删除0,但将其替换为空格。因此,我将这一行添加到代码中,它会出错:

For /R "D:\Shared\Quality Photos\TEST2\TEST\" %%a in ( *.*) do ren "%%a" %%a
如何解决这个问题的想法?

@ECHO OFF
SETLOCAL
设置“sourcedir=U:\sourcedir”
对于(0**)中的/r“%sourcedir%”%%a,请执行以下操作:(
SET num=%%~na
调用ECHO(REN“%%a”“%%num:~1%%%~xa”
)
后藤:EOF
您需要更改
sourcedir
的设置以适应您的环境

所需的REN命令仅用于测试目的。
ECHO
ed。验证命令正确后,将
ECHO(REN
更改为
REN
以实际重命名文件


方法:将
num
设置为文件的名称部分(
%%~na
),然后重命名文件,删除第一个字符并附加扩展名(
%%~xa

如果要删除所有前导零,即使有多个,也可以尝试以下操作:

for/F“delims=“%%F in('
dir/B/S“D:\Shared\Quality Photos\TEST2\TEST\0*”
""做"(
对于/F“tokens=*delims=0”%%%N in(“%%~nxF”)do(
如果不是“%%N”==”仁“%%F”“%%N”
)
)
内部
for/F
循环从文件名中删除所有前导分隔符,即
0

如果不是“%%N”==”
部分,则仅在可能出现基名称仅由零组成且没有文件扩展名的文件时才需要



对于在循环枚举的目录(树)中重命名、复制或(重新)移动的文件,不应使用
for
/R
)循环,因为文件可能会被处理两次或根本不被处理。请参阅了解原因。使用
for/F
dir/B
/S
)是一个更好的选择,因为在循环开始处理任何项目之前,会枚举整个目录(树)。(在您的特定情况下,不会出现问题,因为重命名的文件不再与模式匹配,因为始终只有一个前导
0

是否总是只有一个
0
要删除,或者是否有多个零?