基本上,我正在开展一个大型项目,其中包含一些挑战自我的新概念。我计划通过HTML从我的文档所在的文件夹中映射出我的计算机目录和文件夹。好吧,事实证明(并不奇怪),我需要一些其他文件来进行映射,以便HTML文件可以将其可视化。我被卡住了。基本上,我决定创建一个如下所示的批处理脚本:
NULL
这是我在https://grumpybear.wordpress.com/2011/05/22/batch-files-to-list-all-files-and-directories-in-a-folder/发现的一个简单但很酷的脚本,它很好地描述了脚本的组件。输出文本文件如下所示:
echo off
cd %cd%
for /d %%a in (*) do dir /ad /on /s /b "%%a" >> get_dirs.txt
这是脚本放在桌面上的时候。这与我遇到严重问题时的情况差不多。我需要将这些文件作为
显示在html文档中 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
所以我要编辑回声输出,傻傻的我没有意识到它不是使用echo输出而是使用dir命令。所以我尝试通过将输出作为输入发送到变量来编辑带有echo的输出。我确信Batch - Command output to variable和Save command output to variable上有解决方案,但这些页面上的答案有点模糊,对于经验不足的人来说有点混乱。另外,我不确定它是否重要,因为这些目录都是一个完整的输出,而不是一行一行(可逐行编辑)。我不确定是否可以在输出文件中将一行接一行制作成单独的变量,这将是很好的。如果我可以将文本文档的一行变为变量,然后是下一行,那么将会有所帮助,依此类推。我可以格式化我的html链接使用单独链接中的变量,通过使用由以下原因引起的不同输出:
<a href="file:///C:/Users/etc.">C:/Users/etc.</a>
脚本可以通过读取.txt文件中有多少行来计算所需的变量数量,如下所示:How to count no of lines in text file and store the value into a variable using batch script?。 如果有人可以分享任何见解(我知道这需要很多东西和很多信息)我会非常感激。主要是逐行获取变量是主要部分。我想我可能会得到一些其他的东西。谢谢。
- 编辑:所以,我有点想,批处理脚本有没有办法逐行读取.txt文件?似乎有,但没有人真正打破这种方法。这对我来说似乎有点模糊。
- 编辑:我做了一些思考并四处寻找并提出了这段代码:
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>
这个脚本有问题,或者是批处理脚本输出,&#34; Missing Operator,&#34;一堆,然后关闭窗口。我不确定它有什么问题,但我认为我到了某个地方。我认为在回显我的html代码时可能与尖括号有关,认为它试图输出或重定向回声。任何人都知道如何解决这个问题(假设这是实际问题)?
答案 0 :(得分:0)
<
and >
are commands to redirect in- or output. To disable this behaviour you have to escape ("disarm") those characters with a caret ^
:
echo ^<a href="%file%:///%text%"^>%text%^</a^>
Also your second for
reassigns each line to the variable (one after the other), resulting in your varaible containing the last line only. Extend the for
to contain your echo
line:
for /F "tokens=*" %%A in (get_dirs.txt) do (
echo ^<a href="%file%:///%%A"^>%%A^</a^>
)
PS: are you sure set /a file=file
does what you want? According to your desired output, you should just use set file=file