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

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

我尝试搜索以前的问题,但都不起作用,或者我无法使它们适应我的需要。

我想编写一个脚本来请求:

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

并替换每个文件在指定的文件夹和子文件夹(并强制用户输入一个)标准(例如,它必须是一个“.cue”文件),并且:

  1. 如果该文件是只读的,请禁用它。
  2. 搜索指定旧字符串在里面文件内容并将其替换为新字符串, 和保存同一文件中的更改
  3. 如果该文件是只读的,请再次启用它。

我到目前为止有这段代码,但我不知道该做什么do

@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

使用 FOR /F 与 DIR /B /S /ADR 来获取未设置只读标志的文件。

然后使用已发布的几种方法之一来修改文本文件。我更喜欢使用混合 JScript/批处理实用程序,称为 REPL.BAT在 stdin 上执行正则表达式搜索和替换,并将结果写入 stdout。它是纯本机脚本,可在 XP 及以上版本的任何现代 Windows 机器上运行 - 无需第三方可执行文件。完整文档嵌入在脚本中。

L选项会导致文字搜索,并且该V选项从变量而不是字符串文字中获取搜索和替换值。

假设 REPL.BAT 位于您当前的文件夹中,或者更好的是,位于您路径中的某个位置:

@echo off
setlocal

: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 ? "

for /f "delims=" %%F in ('dir /b /s /a-d-r "%var2%\%files%" 2^>nul') do (
  echo modifying %%F
  type "%%F" | repl old new lv >"%%F.new"
  move /y "%%F.new" "%%F" >nul
)

pause

exit /b

:ERROR
echo type something!!
goto START

相关内容