删除Windows中目录和子文件夹中*.txt文件中的所有空行

删除Windows中目录和子文件夹中*.txt文件中的所有空行,windows,batch-file,cmd,Windows,Batch File,Cmd,搜索、尝试和哭泣我开发了一个代码: For /R %%G IN (*.txt) do for /f "delims=" %%a in ('more +1 %%G ^| find /v ""') do (set line=%%~a echo !line!) > new\%%G 有人知道为什么它会永远循环吗 它要做的是删除它在所有子目录中找到的每个*.txt文件中的空行,并将同名的新文件放在“new”文件夹中。我可以手动提供所需的所有“新”文件夹。我不确定这是否会导致它永远循环,但您正在写入

搜索、尝试和哭泣我开发了一个代码:

For /R %%G IN (*.txt) do for /f "delims=" %%a in ('more +1 %%G ^| find /v ""') do (set line=%%~a echo !line!) > new\%%G
有人知道为什么它会永远循环吗


它要做的是删除它在所有子目录中找到的每个*.txt文件中的空行,并将同名的新文件放在“new”文件夹中。我可以手动提供所需的所有“新”文件夹。

我不确定这是否会导致它永远循环,但您正在写入的新文件夹与您正在读取的文件夹处于同一层次结构中。所以它将处理您刚刚编写的文件。你需要一个过滤器来防止这种情况

另外,我认为您的输出文件名需要
%%~nxG
只获取文件名和扩展名,而不需要路径

有一种更简单的方法可以去掉空行<代码>findstr。文件将删除空行
findstr/rc:“[^]
将删除空行和只包含空格的行

@echo off
setlocal
set "outFolder=new"
for %%F in ("%outfolder%\.") for /r %%G in (*.txt) do if "%%~dpG" neq "%%~fF\" findstr /rc:"[^ ]" "%%G" >"%%~fF\%%~nxG"
但最简单的方法是确保输出文件夹与源层次结构不同

for /r %%G in (*.txt) do findstr /rc:"[^ ]" "%%G" >"\distinctPath\%%~nxG"
更新


有一件事可能会导致您的脚本挂起,即如果文件的行数超过64k,piped MORE将挂起。但我不明白您为什么要首先使用更多行数。

您是否知道,
MORE+1
会删除每个文件的第一行?(可能是您的意图)我对这个主题完全陌生。我不知道。谢谢。