【问题标题】:Editing Command Outputs编辑命令输出
【发布时间】:2016-12-01 23:57:25
【问题描述】:

基本上,我正在从事一个大型项目,其中包含一些新概念来挑战自己。我正计划通过 HTML 从我的文档所在的文件夹中映射出我的计算机目录和文件夹。好吧,事实证明(并不奇怪),我需要一些其他文件来进行映射,以便 HTML 文件可以将其可视化。我被困住了。基本上,我决定创建一个如下所示的批处理脚本:

    echo off
    cd %cd%
    for /d %%a in (*) do dir /ad /on /s /b "%%a" >> get_dirs.txt

这是我在https://grumpybear.wordpress.com/2011/05/22/batch-files-to-list-all-files-and-directories-in-a-folder/ 发现的一个简单但很酷的脚本,它很好地描述了脚本的组件。输出文本文件如下所示:

    C:\Users\Jason\Desktop\G3\DCIM\CardboardCamera
    C:\Users\Jason\Desktop\G3\DCIM\Facebook
    C:\Users\Jason\Desktop\G3\DCIM\Flickr
    C:\Users\Jason\Desktop\G3\DCIM\.thumbnails\otg
    C:\Users\Jason\Desktop\G3\Download\Adobe Acrobat
    C:\Users\Jason\Desktop\G3\Download\Adobe Reader
    C:\Users\Jason\Desktop\G3\Download\TrimbleMapBundles
    C:\Users\Jason\Desktop\G3\Pictures\Facebook
    C:\Users\Jason\Desktop\G3\Pictures\Instagram
    C:\Users\Jason\Desktop\G3\Pictures\Messenger
    C:\Users\Jason\Desktop\G3\Pictures\Old Phone

这是脚本放置在桌面上的时间。当我遇到一个严重的问题时,这几乎是我所能得到的。我需要让这些文件在 html 文档中显示为

    <a href="file:///C:/Users/etc.">C:/Users/etc.</a>

所以我要编辑 echo 输出,愚蠢的我没有意识到它不是使用 echo 输出而是使用 dir 命令。因此,我尝试通过将输出作为输入发送到变量来使用 echo 编辑输出。我敢肯定在Batch - Command output to variableSave command output to variable 上有解决方案,但是这些页面上的答案有点模糊,对于经验较少的人来说有些混乱。另外,我不确定这是否重要,因为这些目录都作为一个完整的输出出现,而不是逐行(可逐行编辑)。我不确定是否可以将输出文件中的一行接一行变成单独的变量,这会很棒。如果我可以使文本文档的一行成为变量,然后是下一行,以此类推,那将很有帮助。我可以使用单独链接中的变量来格式化我的html链接,方法是通过以下原因产生不同的输出:

    echo <a href="file:///%dir1%">%dir1%</a>
    echo <a href="file:///%dir2%">%dir2%</a>
    echo <a href="file:///%dir3%">%dir3%</a>
    echo <a href="file:///%dir4%">%dir4%</a>
    echo <a href="file:///%dir5%">%dir5%</a>

脚本可以通过读取 .txt 文件中有多少行来计算所需的变量数量,如下所示:How to count no of lines in text file and store the value into a variable using batch script?。 如果有人可以分享任何见解(我知道这是很多要求和很多信息),我将不胜感激。主要是逐行获取变量是主要部分。我想我也许可以得到一些其他的东西。谢谢。

--编辑:所以,我在想,有没有办法让批处理脚本逐行读取 .txt 文件?似乎有,但没有人真正分解过这种方法。这对我来说似乎有点模糊。

--编辑:我做了更多的思考和环顾四周,想出了这个代码:

    @echo off
    set /a file=file
    cd %cd%
    for /d %%b in (*) do dir /ad /on /s /b "%%b" >> get_dirs.txt
    for /F "tokens=*" %%A in (get_dirs.txt) do set /a text=%%A
    echo <a href="%file%:///%text%">%text%</a>
    pause

这个脚本有问题,或者批处理脚本输出说“缺少操作员”很多次,然后关闭窗口。我不确定它有什么问题,但我确实认为我到了某个地方。我认为在回显我的 html 代码时可能与尖括号有关,认为它正在尝试输出或重定向回显。有谁知道我该如何解决这个问题(假设这是实际问题)?

【问题讨论】:

    标签: html batch-file directory


    【解决方案1】:

    &lt;&gt;是重定向输入或输出的命令。要禁用此行为,您必须使用插入符号 ^ 转义(“解除”)这些字符:

     echo ^<a href="%file%:///%text%"^>%text%^</a^>
    

    另外,您的第二个 for 将每一行重新分配给变量(一个接一个),导致您的变量仅包含最后一行。扩展 for 以包含您的 echo 行:

     for /F "tokens=*" %%A in (get_dirs.txt) do (
         echo ^<a href="%file%:///%%A"^>%%A^</a^>
    )
    

    PS:你确定set /a file=file 做你想做的事吗?根据您想要的输出,您应该只使用set file=file

    【讨论】:

      猜你喜欢
      • 2016-08-24
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 2013-03-20
      • 1970-01-01
      相关资源
      最近更新 更多