Board logo

标题: [文件操作] 批处理怎样根据文件路径筛选复制(Joomla文件整理)? [打印本页]

作者: tuding    时间: 2011-6-27 18:33     标题: 批处理怎样根据文件路径筛选复制(Joomla文件整理)?


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


我只会写简单的bat,在筛选的这个地方卡住了,无法进行下去,请各位老鸟指教!
作者: batman    时间: 2011-6-28 09:12

就题解题吧:
  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
复制代码

作者: batman    时间: 2011-6-28 09:18

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

作者: tuding    时间: 2011-7-5 06:50

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

  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!经修改,问题解决了,不过我写得有点啰嗦了




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