重命名&替换字符windows批处理脚本

时间:2015-10-29 03:11:51

标签: batch-file

X

在Windows批处理脚本中重命名文件不成功。 请劝告。感谢帮助

set "source=C:\Users\Processed"

    for /f "delims=" %%A in ('findstr /s /m /l /c:"949010" "%source%\*"') 
        do (
        set "fname=%%A"
            setlocal enabledelayedexpansion
            set "fname=!fname:{=!"
            ren %%A "!fname!"
            endlocal &
        copy /y "%source%\%fname%" "C:\Users\949010" )

2 个答案:

答案 0 :(得分:2)

我审核时你的代码中有5个小错误! BTW修改原始代码是一个坏主意,不知道你在问题本身中做了什么 ...

  • fname变量必须只包含文件的名称和扩展名,因此必须在~nx变量中使用%%A修饰符。
  • do子句必须放在for命令的同一行中。
  • ren命令中,两个名称​​应括在引号中(不是案例中的错误)。
  • &符号用于分隔同一行中的两个命令 应该是&之后的命令。
  • for循环内变化的变量的所有引用必须用感叹号括起来。
  • {/ 1}}命令必须在带有感叹号的最后一个变量之后放置

我还以标准方式修改了代码的正当性。

这是更正后的代码:

endlocal

答案 1 :(得分:0)

set "source=C:\Users\Processed"

for /f "delims=" %%A in ('findstr /s /m /l /c:"949010" "%source%\*"') do (
    set "fname=%%~nxA"
    setlocal enabledelayedexpansion
    set "fname=!fname:{=!"
    ren "%%A" "!fname!"
    copy /y "%%A" "C:\Users\949010"
    endlocal
)