如何将批处理文件自身排除在重命名之外

13 浏览
0 Comments

如何将批处理文件自身排除在重命名之外

以下情景:

我写了一个批处理脚本,它会在文件名中添加日期时间戳。文件夹中有很多不同类型的文件。

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "datestamp=%YYYY%-%MM%-%DD%_" 
:: 根据ISO 8601命名
pause
for %%i in (*.*) do ren %%i %datestamp%%%i*

有没有一种好的方法来排除批处理文件本身的重命名?如果有一种方法可以排除所有的.bat文件,那就足够好了。

0
0 Comments

如何排除批处理文件本身的重命名

在批处理文件中,有时候需要对文件进行重命名操作。然而,如果不排除批处理文件本身,那么批处理文件也会被重命名,这显然是不希望出现的情况。下面给出了解决这个问题的原因和方法。

原因:

问题的原因是批处理文件本身也会被重命名。这是因为在重命名操作中没有排除批处理文件本身,导致批处理文件也被重命名。

解决方法:

为了排除批处理文件本身的重命名,可以使用以下方法:

1. 在REN语句中,不需要使用尾部的*。这个*字符并没有起到任何作用,可以去掉。

2. 在对文件名进行重命名之前,应该使用引号将文件名括起来。这样可以避免文件名中包含空格时出现的问题。

3. 使用DIR /B命令获取文件列表,并将其通过管道传递给FINDSTR /V命令。这样可以得到一个除了运行脚本以外的文件列表。

4. 使用%~nx0获取运行脚本的文件名和扩展名。

5. 使用FOR /F命令来捕获和处理文件列表。

下面是具体的代码示例:

for /f "eol=: delims=" %%F in ('dir /b /a-d ^| findstr /vixc:"%~nx0"') do ren "%%F" "%datestamp%%%F"

通过以上方法,可以排除批处理文件本身的重命名,只对其他文件进行重命名操作。

0