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