找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23369|回复: 4

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

[复制链接]
发表于 2011-6-27 18:33:56 | 显示全部楼层 |阅读模式
  • 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,在筛选的这个地方卡住了,无法进行下去,请各位老鸟指教!
发表于 2011-6-28 09:12:37 | 显示全部楼层
就题解题吧:

  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
复制代码
发表于 2011-6-28 09:18:36 | 显示全部楼层
本帖最后由 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. )
复制代码
 楼主| 发表于 2011-7-5 06:50:43 | 显示全部楼层
谢谢batman!set的内容输出没有问题,但是copy时会提醒路径错误,可能因为是文件对文件的拷贝。用xcopy可以复制成功,但要反复处理提示
 楼主| 发表于 2011-7-11 12:41:05 | 显示全部楼层
  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!经修改,问题解决了,不过我写得有点啰嗦了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 15:33 , Processed in 0.018942 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表