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

[文件操作] 批处理怎样根据文件路径筛选复制(Joomla文件整理)?


  • E:\htdocs\j15\components\com_wrapper\index.html
  • E:\htdocs\j15\components\com_wrapper\metadata.xml
  • E:\htdocs\j15\components\com_wrapper\router.php
  • E:\htdocs\j15\components\com_wrapper\wrapper.php
  • E:\htdocs\j15\components\com_wrapper\wrapper.xml
  • E:\htdocs\j15\components\com_wrapper\views\index.html
  • E:\htdocs\j15\components\com_wrapper\views\wrapper\index.html
  • E:\htdocs\j15\components\com_wrapper\views\wrapper\metadata.xml
  • E:\htdocs\j15\components\com_wrapper\views\wrapper\view.php
  • E:\htdocs\j15\components\com_wrapper\views\wrapper\tmpl\default.php
  • E:\htdocs\j15\components\com_wrapper\views\wrapper\tmpl\default.xml
  • E:\htdocs\j15\components\com_wrapper\views\wrapper\tmpl\index.html

以上是用
  1. dir /b /s /O:N /A:A > list.txt
复制代码
产生的一系列文件列表,是Joomla内容管理系统的j15/components文件夹中的一部分,而有用的文件是路径中含有“……\views\……\tmpl\”的,类似上面粗体的那部分。
(Joomla内容管理系统,只有文件路径是“……\views\……\tmpl\”的可以决定前台输出,而这些文件可以在模板文件夹重建优先输出,但是重建的树状结构与上面粗体显示的相比略有变化)
筛选出的文件路径需要重新组织,即复制到新位置的文件的路径中没有“……\views\……\tmpl\”的“views”和“tmpl”和这个文件夹结构

  • E:\htdocs\new\components\com_wrapper\wrapper\default.php
  • E:\htdocs\new\components\com_wrapper\wrapper\default.xml
  • E:\htdocs\new\components\com_wrapper\wrapper\index.html


我只会写简单的bat,在筛选的这个地方卡住了,无法进行下去,请各位老鸟指教!

就题解题吧:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('findstr "views.*tmpl" list.txt') do (
  3.   set "str=%%a"&set "str=!str:\j15\=\new\!"
  4.   set "str=!str:\views\=\!"
  5.   echo !str:\tmpl\=\!
  6. )
  7. pause>nul
复制代码
***共同提高***

TOP

本帖最后由 batman 于 2011-6-28 09:21 编辑

完整的:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /a-d /b /s^|findstr "views.*tmpl"') do (
  3.   set "str=%%~dpa"&set "str=!str:\j15\=\new\!"
  4.   set "str=!str:\views\=\!"
  5.   copy /y "%%a" "!str:\tmpl\=\!"
  6. )
复制代码
***共同提高***

TOP

谢谢batman!set的内容输出没有问题,但是copy时会提醒路径错误,可能因为是文件对文件的拷贝。用xcopy可以复制成功,但要反复处理提示

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. dir E:\htdocs\j15\components /b /s /O:N /A:D > com_list.txt
  3. for /f "delims=" %%a in ('findstr "views.*tmpl" com_list.txt') do (
  4. set "str=%%a"&set "str=!str:\j15\=\new\!"
  5. set "str=!str:\views\=\!"
  6. echo %%a
  7. echo !str:\tmpl\=\!
  8. xcopy %%a !str:\tmpl=\! /E /I
  9. )
  10. dir E:\htdocs\j15\modules /b /s /O:N /A:D > mod_list.txt
  11. for /f "delims=" %%a in ('findstr "*tmpl" mod_list.txt') do (
  12. set "str=%%a"&set "str=!str:\j15\=\new\!"
  13. echo %%a
  14. echo !str:\tmpl\=\!
  15. xcopy %%a !str:\tmpl=\! /E /I
  16. )
  17. pause>nul
复制代码
谢谢batman!经修改,问题解决了,不过我写得有点啰嗦了

TOP

返回列表