[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
使用递归
  1. cls
  2. function Build-DirXml([System.IO.DirectoryInfo]$dir,$depth){
  3.     #当前文件夹开始
  4.     $str = ''
  5.     for($i = 0; $i -lt $depth; $i++) { $str += "`t" }
  6.     $str += '<outline text="{0}">' -f $dir.Name
  7.     #递归子文件夹
  8.     $dirs = $dir.GetDirectories()
  9.     $depth_tmp = $depth
  10.     if($dirs.Count -gt 0){
  11.         $sub_str = "`r`n" ; ++$depth_tmp
  12.         $dirs | foreach { $sub_str += Build-DirXml -dir $_ -depth $depth_tmp }
  13.     } else { $sub_str = ''}  
  14.     #当前文件夹结束
  15.     $str += $sub_str
  16.     if($dirs.Count -gt 0){ for($i = 0; $i -lt $depth; $i++) { $str += "`t" } }
  17.     $str += '<outline/>' + "`r`n"
  18.     #递归结束
  19.     return $str
  20. }
  21. Build-DirXml -dir (Get-Item '顶级') -depth 0
复制代码
1

评分人数

TOP

回复 14# 5i365


    啥意思,加上head,title,body?

TOP

回复 16# 5i365


    那就生成和上面一模一样的xml
  1. cls
  2. function Build-DirXml([System.IO.DirectoryInfo]$dir,$depth){
  3.     #当前文件夹开始
  4.     if($depth -eq 0 ){
  5.         $str =  '<?xml version="1.0" encoding="UTF-8"?>' + "`r`n"
  6.         $str += '<opml version="1.0" xmlns:sx="http://www.microsoft.com/schemas/rss/sse">' + "`r`n`t"
  7.         $str += '<head>' + "`r`n`t`t" + ('<title>{0}</title>' -f $dir.Name) + "`r`n`t" + '</head>' + "`r`n`t" + "<body>"
  8.         $end_str = '</body>' + "`r`n" + '</opml>'
  9.         ++$depth
  10.     } else {
  11.         $str = '' ; $end_str = ''
  12.         for($i = 0; $i -lt $depth; $i++) { $str += "`t" }
  13.         $str += '<outline text="{0}">' -f $dir.Name
  14.         $end_str = '<outline/>' + "`r`n"
  15.     }
  16.     #递归子文件夹
  17.     $dirs = $dir.GetDirectories()
  18.     $depth_tmp = $depth
  19.     if($dirs.Count -gt 0){
  20.         $sub_str = "`r`n" ; ++$depth_tmp
  21.         $dirs | foreach { $sub_str += Build-DirXml -dir $_ -depth $depth_tmp }
  22.     } else { $sub_str = ''}  
  23.     #当前文件夹结束
  24.     $str += $sub_str
  25.     if($dirs.Count -gt 0){ for($i = 0; $i -lt $depth; $i++) { $str += "`t" } }
  26.     #递归结束
  27.     return $str + $end_str
  28. }
  29. Build-DirXml -dir (Get-Item '顶级') -depth 0 | Out-File '0.xml'
复制代码
1

评分人数

TOP

返回列表