用于修改指定文件中的文件内容的脚本

时间:2013-09-22 14:31:15

标签: file batch-file replace directory

我尝试搜索以前的问题,但没有工作,或者我无法根据我的需要调整它们

我想写一个要求的脚本:

  • 文件夹
  • 标准
  • 旧字符串
  • 新字符串

并使用特定的条件替换指定文件夹和子文件夹中的每个文件(并强制用户键入一个)(例如,必须是“.cue”文件),并且:

  1. 如果文件是“只读”,请将其禁用
  2. 文件内容中搜索指定的旧字符串,并将其替换为新字符串,并将更改保存在同一文件中< /强>
  3. 如果文件是“只读”,请再次启用
  4. 我有这个进步,但我不知道要在“做”部分做什么:

    @echo off 
    
    setLocal enableDELAYedexpansion
    
    :START
    set "var2="
    set /P var2="type folder "
    
    if "%var2%"=="" goto ERROR
    
    set /p old="old string ? "
    set /p new="new string ? "
    set /p files="what criteria ? "
    echo modifying files...
    
    for /r "%var2%" %%v in (%%files) do (
    
    ???
    
    )
    pause
    
    goto START
    
    :ERROR
    echo type something!!
    goto START
    

1 个答案:

答案 0 :(得分:0)

下面的批处理文件可以执行您想要的操作,它需要我必须从this site

复制的FindRepl.bat文件
@echo off 

setLocal EnableDelayedExpansion

:START
set "var2="
set /P var2="type folder "

if "%var2%" == "" goto ERROR

set /p old="old string ? "
set /p new="new string ? "
set /p files="what criteria ? "
echo modifying files...

for /r "%var2%" %%v in (*%files%) do (
   for /F "delims=" %%a in ('attrib "%%v"') do (
      set "attrib=%%a"
      set "attrib=!attrib:~0,10!"
      if "!attrib:R=!" neq "!attrib!" (
         attrib -R "%%v"
         set attrib=+R
      ) else (
         set attrib=-R
      )
   )
   call FindRepl "%old%" "%new%" < "%%v" > "%%v.tmp"
   move /Y "%%v.tmp" "%%v"
   attrib !attrib! "%%v"
)
pause

goto START

:ERROR
echo type something!!
goto START

您必须注意“旧”字符串是FindRepl.bat文档中描述的“正则表达式”,因此您必须使用反斜杠转义任何句点。例如,您必须输入“\ .wav”才能搜索“.wav”字符串!