2016-12-01 102 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