使用批处理文件从文件或多个文件中删除尾随空格

时间:2017-08-17 16:36:59

标签: batch-file

如何在bat文件的帮助下实现以下两项功能:

  1. 仅删除文件末尾的空格。
  2. 对文件或具有文件夹(目录)的所有文件执行此操作。
  3. 文件可能包含连续的文本字符串,其中可能包含空格,*,>,〜,!,|和^。

    编辑过的文件应保留相同的名称。删除空格后无需创建新文件。

    这是我到目前为止(在其他成员的帮助下)但是如果我从另一个bat文件(remove_space.bat file_to_change.txt)调用它,它就不起作用,其中remove_space.bat是包含脚本的文件而“file_to_change.txt”是末尾有空格的文件。如果目录中存在多个文件,则文件名将为:file_to_change _ #######。txt。其中“#”是计数器或日期/时间戳。

    @echo off
    setlocal enableDelayedExpansion
    set "spcs= "
    for /l %%n in (1 1 12) do set "spcs=!spcs!!spcs!"
    findstr /n "^" "%~1" >"%~1.tmp"
    setlocal disableDelayedExpansion
       (
        for /f "usebackq delims=" %%L in ("%~1.tmp") do (
          set "ln=%%L"
          setlocal enableDelayedExpansion
          set "ln=!ln:*:=!"
          set /a "n=4096"
          for /l %%i in (1 1 13) do (
           if defined ln for %%n in (!n!) do (
            if "!ln:~-%%n!"=="!spcs:~-%%n!" set "ln=!ln:~0,-%%n!"
            set /a "n/=2"
            )
          )
         echo(!ln!
         endlocal
      )
    ) >"%~1"
    del "%~1.tmp" 2>nul
    

0 个答案:

没有答案