Board logo

标题: [文本处理] 【已解决】求BAT脚本批量修改子目录内的文件内容 [打印本页]

作者: zxar520    时间: 2022-9-6 12:11     标题: 【已解决】求BAT脚本批量修改子目录内的文件内容

name.txt内容:
abc1_cc
abc2_cc
abc3_cc
abc4_cc
... ... ...等多行名称


原目录:
home/aaaa_cc/【aaaa_cc目录里面有多个子目录和文件】



最终目录结构:
home/wwwroot/abc1_cc/js/.user.ini
            /abc2_cc/js/.user.ini
            /abc3_cc/js/.user.ini
            /abc4_cc/js/.user.ini
             ... ... ...

                       等几十个目录

.user.ini文本内容:open_basedir=/home/wwwroot/aaa_cc/js:/tmp/:/proc/



需求:根据txt【name.txt】的内容,先复制aaaa_cc目录及子目录到wwwroot目录下并重命名为abc1_cc、abc2_cc、abc3_cc...等
      然后再批量修改.user.ini内容【aaa_cc】跟目录abc1_cc、abc2_cc、abc3_cc相对应。



      请大佬帮忙写一个,非常非常感谢!!!!
作者: flashercs    时间: 2022-9-6 13:30

  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%A in (name.txt) do (
  4.   md "home\wwwroot\%%~A" 2>nul
  5.   xcopy "home\aaaa_cc\*" "home\wwwroot\%%~A" /e /f /y
  6.   powershell -c "[io.file]::WriteAllText('home\wwwroot\%%~A\js\.user.ini',[io.file]::ReadAllText('home\wwwroot\%%~A\js\.user.ini').Replace('/aaa_cc/','/%%~A/'))"
  7. )
  8. pause
复制代码

作者: zxar520    时间: 2022-9-6 14:11

本帖最后由 zxar520 于 2022-9-6 14:21 编辑
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%A in (name.txt) do (
  4.   md "wwwroot\%%~A" 2>nul
  5.   xcopy "aaaa_cc\*" "wwwroot\%%~A" /e /f /y
  6.   powershell -c "[io.file]::WriteAllText('home/wwwroot/%%~A/js/.user.ini',[io.file]::ReadAllText('home/wwwroot/%%~A/js/.user.ini').Replace('/aaa_cc/','/%%~A/'))"
  7. )
  8. pause
复制代码
大佬,我修改了下,现在可以复制了,但是不能修改文件内容,提示以下错误
  1. 使用“1”个参数调用“ReadAllText”时发生异常:“未能找到路径“D:\Desktop\home\ho
  2. me\wwwroot\abc1_cc\js\.user.ini”的一部分。”
  3. 所在位置 行:1 字符: 85
  4. + [io.file]::WriteAllText('home/wwwroot/abc1_cc/js/.user.ini',[io.file]::Read
  5. AllText <<<< ('home/wwwroot/abc1_cc/js/.user.ini').Replace('/aaa_cc/','/abc1_cc/'))
  6.     + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
  7.     + FullyQualifiedErrorId : DotNetMethodException
复制代码

作者: zxar520    时间: 2022-9-6 14:32

本帖最后由 zxar520 于 2022-9-6 14:50 编辑
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%A in (name.txt) do (
  4.   md "wwwroot\%%~A" 2>nul
  5.   xcopy "aaaa_cc\*" "wwwroot\%%~A" /e /f /y
  6.   powershell -c "[io.file]::WriteAllText('wwwroot/%%~A/js/.user.ini',[io.file]::ReadAllText('wwwroot/%%~A/js/.user.ini').Replace('/aaa_cc/','/%%~A/'))"
  7. )
  8. pause
复制代码
修正后正常使用的代码!感谢大佬!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2