【问题标题】:How to get a list of contents in a directory, then wrap text around the list?如何获取目录中的内容列表,然后在列表周围换行?
【发布时间】:2016-01-01 13:46:05
【问题描述】:

我的目标很简单:我想在我的网站上列出数百本电子书。只需单击单词,它就会在新选项卡中打开 pdf。我的问题在于手动执行此操作需要数天才能处理一个文件夹。在 powershell 中,我设法找到一种方法来列出目录中的所有内容并将它们保存到文件中。

cd "directory\to\file"
ls $search_dir > text.txt

这将打印内容并将它们保存在文本文件中。我想要做的是在它周围环绕文字。在 HTML 中,很明显你需要让你的标签像

<p><a href="path/to/file/file.pdf" target="_blank" class="downloadlink2">file</a></p>

这就是我希望打印出来的列表的样子。那么如何让内容列表像这样被包裹起来(并且在没有“.pdf”扩展名的标签之间再次打印)?

【问题讨论】:

    标签: powershell scripting automation


    【解决方案1】:

    这是一半的谜题,解决另一半比简单地告诉答案更有价值。

    这将读取( ) 中的文本文件,并将字符串Added 添加到每个行项目的末尾。

    感谢https://stackoverflow.com/a/4952679/4317867@mjolinor

    (gc C:\Temp\z.txt) | ForEach-Object { $_ + " Added" } | Set-Content C:\Temp\z.txt
    

    【讨论】:

    • 我爱你这么多用户。你刚刚为我节省了几天的工作时间。如果我的问题不是最好的(注意到投反对票),我很抱歉,但我很绝望。非常感谢。 -edit- 你也说得对,找到另一半更有意义
    • 不客气!请考虑接受答案或发布您自己的问题解决方案,以帮助发现此问题的其他人。
    【解决方案2】:

    在powershell中,输入

    cd "directory/to/file" 
    

    然后输入

    ls $search_dir
    

    ALT+左键单击选择“名称”部分的一个块。将其复制到文本文件并将其命名为 filename.txt。然后使用以下行来应用包装:

    (gc C:\location\to\filename.txt) | ForEach-Object { "<p><a href=$([char]34)ebooks/Books/path/to/file/$_$([char]34) target=$([char]34)_blank$([char]34) class=$([char]34)downloadlink2$([char]34)>$_</a></p>" } | Set-Content C:\location\to\filename.txt
    

    gc 在它旁边的目录中抓取文件。 ForEach-Object 告诉 powershell 为文档中的每一行运行大括号中的内容。 $([char]34) 是字符串中的引号,$_ 是 filename.txt 文件中的一行。 Set-Content 告诉 powershell 应用对 .txt 文件所做的更改。完成后,事情将如下所示:

    <p><a href="C:\path\to\file.pdf" class="downloadlink2" target="_blank">file.pdf</a></p>
    

    希望这对将来的人有所帮助。

    【讨论】:

      猜你喜欢
      • 2014-03-29
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2013-02-02
      相关资源
      最近更新 更多