UPDATE如何在文本文件中逐步「cd」進入所有文件夾?
這裏是我的全碼:
cd "C:\Users"
DIR /A:D /S /B > "%appdata%\folder_overview.txt"
type "%appdata%\folder_overview.txt" | findstr /v AppData | findstr /v All.Users | findstr /v Public >> "%appdata%\newfolder.txt"
move "%appdata%\newfolder.txt" "%appdata%\folder_overview.txt"
:repeatuntilfilesizezero
set LINES=0
for /f "delims==" %%I in (%appdata%\folder_overview.txt) do (
set /a LINES=LINES+1
)
set /a LINES=LINES-1
more +%LINES% < "%appdata%\folder_overview.txt" >> "%appdata%\last_folder.txt"
Setlocal EnableDelayedExpansion
set content=
for /f "delims=" %%i in (%appdata%\last_folder.txt) do set content=!content! %%i
pause
cd %content%
type "%appdata%\folder_overview.txt" | findstr /v "%content%" >> "%appdata%\newfolder.txt"
move "%appdata%\newfolder.txt" "%appdata%\folder_overview.txt"
DEL "%appdata%\last_folder.txt"
FOR %%S IN (%appdata%\folder_overview.txt) DO set size=%%~zS
echo %size%
IF %size% gtr 0 echo goto :repeatuntilfilesizezero
IF %size% equ 0 echo "null"
pause
我注意到,這是完全值得,最後一行是空行。 我只想以下幾點:
- 列表中的所有文件夾
- 「cd」命令在「folder_overview.txt」最後一個文件夾,並從文件中刪除最後一行
- 檢查,如果「folder_overview.txt」空 - >如果不是空的,只是轉到標籤「:repeatuntilfilesizezero」 - >如果爲空,轉到退出
所以最後「CD」,其中的所有文件夾中一步一步「folder_overview.txt 」。
目前「goto:repeatuntilfilesizezero」不起作用。它不會跳轉到標籤。
Hannir
你想要最後一個非空行嗎? – Stephan
爲什麼要計數?只需在'folder_overview.txt'中用'for/F %% L'循環'set'LINE = %% L「'在它的主體中,所以'LINE'被每次迭代覆蓋並且最後包含最後一行(記住'for/F'自己跳空行)......如果'folder_overview.txt'不包含重複行,則可以使用'findstr/L/V/X/C'來刪除最後一行... – aschipfl
對於命令'set content =%content %%%我'你需要啓用延遲擴展,因爲它在一個循環中,所以它必須讀'set content =!content! %%我'... – aschipfl