如何在bat文件的帮助下实现以下两项功能:
文件可能包含连续的文本字符串,其中可能包含空格,*,>,〜,!,|和^。
编辑过的文件应保留相同的名称。删除空格后无需创建新文件。
这是我到目前为止(在其他成员的帮助下)但是如果我从另一个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