【问题标题】:Want to understand a for loop statement of bat file想了解一个bat文件的for循环语句
【发布时间】:2014-03-03 14:01:03
【问题描述】:
@echo off
Setlocal enabledelayedexpansion

Set "Pattern=rename"
Set "Replace=reuse"

For %%a in (*.jpg) Do (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)

这重命名 .jpg 具有子字符串 rename .Ref: How to rename file by replacing substring using batch in Windows 谁能让我明白,For loop 是如何完成这项工作的?另外:是否可以在这里使用/f 开关来摆脱Access Denied

【问题讨论】:

    标签: windows batch-file command-line cmd command-prompt


    【解决方案1】:

    对此进行测试:它使用 for /f 以便文件不会被重命名两次。

    @echo off
    Setlocal enabledelayedexpansion
    
    Set "Pattern=rename"
    Set "Replace=reuse"
    
    For /f "delims=" %%a in ('dir /b /a-d *.jpg ') Do (
    Set "File=%%~na"
    Ren "%%a" "!File:%Pattern%=%Replace%!%%~xa"
    )
    

    【讨论】:

      【解决方案2】:

      您示例中的 for 循环将遍历当前目录中以 .jpg 结尾的每个文件。

      循环%%a 的每次迭代都将扩展为当前.jpg 文件的名称。

      rename 命令随后将%%a(当前.jpg 文件)的名称更改为指定名称,这是!File! 变量的修改版本。

      "!File:%Pattern%=%Replace%!" - 这是字符串操作 - 请参阅DOS Tips。它将扩展到变量!File! 的内容,其中%Pattern% 等于%Replace%

      因此,如果您将变量 %test% 设置为等于 "Test_1_variable" 并运行 echo %test:_= %,它将输出 Test 1 variable

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-27
        相关资源
        最近更新 更多