批处理:删除文件夹和子文件夹中所有文件的空行

时间:2018-07-25 10:20:58

标签: batch-file

我想批量删除当前文件夹和子文件夹中所有文件的所有空行。

myscript.bat:

$(function(){ 
  $('mydiv').load('page2.com');
}

文件夹层次结构:

  • myscript.bat
  • f1.txt
  • 我的文件夹
    • f2.txt

f1.txt和f2.txt是带有空行的简单测试文件。 它可以与f1.txt一起使用,但只需删除f2.txt。

2 个答案:

答案 0 :(得分:1)

您可以利用for /F仍然忽略空行这一事实:

rem // Define constants here:
set "_ROOT=%~dp0."
set "_MASK=*.*"
set "_TEMP=%TEMP%\%~n0_%RANDOM%.tmp"
rem // Walk through all matching files recursively:
for /R "%_ROOT%" %%F in ("%_MASK%") do (
    rem // Exclude this script:
    if /I not "%%~fF"=="%~f0" (
        rem // Write content of file to temporary file:
        > "%_TEMP%" (
            rem // Read file line by line, ignoring empty ones:
            for /F usebackq^ delims^=^ eol^= %%L in ("%%~F") do (
                rem // Just return every non-empty line:
                echo(%%L
            )
        )
        rem // Move temporary file onto original one:
        move /Y "%_TEMP%" "%%~F"
    )
)

答案 1 :(得分:1)

public class ExtendedCanvas:Canvas {

    //I wish to automatically populate this scroll viewer
    //reference to the instance of the scrollviwer which contains
    //this ExtendedCanvas instance
    private ScrollViewer _containingScrollViewer = null;

}

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" > <local:ExtendedCanvas x:Name="extendedCanvas" /> </ScrollViewer> 递归提供所有文件(包括子文件夹中的文件)。
for /r %%A in (*) do ( findstr /v "^$" "%~fA" > "%~dpnA.new" ren "%~dpnA.new" "%%~nxA" ) 排除(for /r)的所有空行(findstr = StartOfLine,/v = EndOfLine),并将其余行写入新文件。然后,^命令将新文件重命名为原始名称。

Pro:比逐行读取每个文件更快;不用担心特殊字符。

相反(或者甚至是专业版-取决于您的意图):这会删除“真空”行。仅包含空格的行并不是真的为空,也不会被删除。