2016-12-01 113 views
-2

基本上,我正在开发一个大型项目,用一些新的概念来挑战自己。我正计划通过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输出,而是迪尔命令。所以我试图通过将输出作为输入发送给变量来编辑输出。我确信在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代码时尖括号,认为它试图输出或重定向回声。任何人都知道我可以如何解决这个问题(假设它是真正的问题)?

回答

0

<>是重定向输入或输出的命令。要禁用此行为,你有逃跑(“撤防”),这些字符以尖号^

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

而且你的第二个for重新分配各行的变量(一个接一个),导致含有您varaible只有最后一行。扩展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