[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】求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相对应。



      请大佬帮忙写一个,非常非常感谢!!!!

  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
复制代码
微信:flashercs
QQ:49908356

TOP

本帖最后由 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
复制代码

TOP

本帖最后由 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
复制代码
修正后正常使用的代码!感谢大佬!

TOP

返回列表