Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 用于修改指定文件中的文件内容的脚本_File_Batch File_Replace_Directory - Fatal编程技术网

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

File 用于修改指定文件中的文件内容的脚本,file,batch-file,replace,directory,File,Batch File,Replace,Directory,我试着搜索以前的问题,但没有一个有效,或者我无法使它们适应我的需要 我想写一个脚本,要求: 文件夹 标准 旧弦 新字符串 并替换指定文件夹和子文件夹中的每个文件,并强制用户键入具有特定条件的文件,例如,它必须是.cue文件,并且: 如果文件为只读,请禁用它 在文件内容中搜索指定的旧字符串,并将其替换为新字符串,然后将更改保存在同一文件中 如果文件为只读,请再次启用它 我有这个进展,但我不知道在do部分要做什么: @echo off setLocal enableDELAYedexpansio

我试着搜索以前的问题,但没有一个有效,或者我无法使它们适应我的需要

我想写一个脚本,要求:

文件夹 标准 旧弦 新字符串 并替换指定文件夹和子文件夹中的每个文件,并强制用户键入具有特定条件的文件,例如,它必须是.cue文件,并且:

如果文件为只读,请禁用它 在文件内容中搜索指定的旧字符串,并将其替换为新字符串,然后将更改保存在同一文件中 如果文件为只读,请再次启用它 我有这个进展,但我不知道在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

下面的批处理文件满足您的要求,它需要我的FindRepl.bat文件,您必须从该文件进行复制


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

举个例子就好了。你真的需要恢复只读属性吗?例如,我需要它来替换文件夹中每个.cue文件中的.wav for.flac字符串。也许有些.cue文件是只读的
@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