這是一個似乎變得更加複雜的需求之一,每當我找到需要「解決辦法」的Windows/cmd shell破解時。基本上......我需要遍歷DOS外殼FOR循環中的特定文件夾列表。這是我想出的循環:FOR/F循環中的Spurious'system cmd.exe'
echo^[start for test]
for /F "usebackq " %%f IN (`dir /b /adh "w:\sandbox\tmp\"`) DO (
echo^ do with file: %%f
rem <do something>
)
echo^[for test done]
主要需要遍歷源文件夾中的隱藏目錄(此處爲sandbox \ tmp)。
結果既令人驚訝又令人沮喪。這是在控制檯命令行上使用此FOR指令的結果。
W:..> for /F "usebackq " %f
IN (`dir /b /adh "w:\sandbox\tmp\"`) DO echo^folder = %f
File Not Found <1>
folder = C:\WINDOWS\system32\cmd.exe <2>
folder = any <4>
folder = hidden-folder-01 <3>
folder = hidden-folder-02 <3>
folder = morph <4>
folder = practice-northwind <4>
其中列出了五個文件夾。大!和一個cmd.exe在標籤:< >和一個神祕的標籤:< >。我應該解釋我認爲的DIR開關。
- /b .......裸格式,只是文件/文件夾的名稱。
- /a dh .....隱藏和目錄,盡力詳盡地嘗試 - 沒有工作。
/一個HD - /一個d ......與目錄屬性(文件夾)的項目。
- /a h ......隱藏文件/文件夾(貌似)。
我已經標記了輸出,這是我迄今爲止所做的工作。
- 'File Not Found'.. .. .. .. .. ..我不知道。我發現「文件未找到」。 < >是/ah交換機的人造物。當我只是說:
IN(dir /b /adh "w:\sandbox\tmp\"
) - C:\ WINDOWS \ system32 ** cmd.exe ** .. ..虛假迭代器(%% f);此錯誤僅與FOR/F命令版本一起顯示。我想查找隱藏的目錄,並且文件集列表不會返回隱藏文件(d'oh)。所以,迄今爲止我卡與有usebackq版本的FOR/F。
- 隱藏文件夾..。 .. .. .. .. .. ..這些文件夾的預期輸出 _。
- 目錄文件夾。 .. .. .. ..這些文件是虛假的結果,而不是想要的。
從CMD線版本(或來自樣品的DOS腳本)預期的結果僅僅是< >項。
W:..> for /F "usebackq " %f
IN (`dir /b /adh "w:\sandbox\tmp\"`) DO echo^folder = %f
folder = hidden-folder-01 <3>
folder = hidden-folder-02 <3>
不幸的是,我'也'可以得到目標文件夾中的任何文件。我認爲這又與HIDDEN開關(/ ah)有關。
如何只列出設置目錄中的隱藏文件夾(不是文件);並像FOR命令一樣迭代列表?
在此先感謝/將
嗨shf301, 感謝您的意見。我很早就發現了這些觀點。不幸的是,這些變化並沒有幫助解決問題。我從/ aX命令中取出了空格。 dir/ah ....不顯示隱藏的文件或文件夾。 dir/ad ....顯示目錄 dir/adh和dir/ahd ....顯示絕對沒有文件或目錄。 在FOR/F循環中的所有情況下 - 我在列表中得到一個僞造的$ system/cmd.exe。 我的領導@是故意的,我發現它在15年前調試腳本時幫助我。 /w。 – will