创建批处理文件以浏览文本文件并删除所有引号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建批处理文件以浏览文本文件并删除所有引号相关的知识,希望对你有一定的参考价值。

我正在尝试编写一个批处理文件,该文件遍历一个文件夹中的所有文本文件并删除每个文本文件中的引号,但也会覆盖它们,因此它们仍然具有相同的文件名。

我已经编写了一个批处理文件,它使用一个名为limits.txt的特定文本文件来执行此操作,然后它会在limits_new.txt中保存不带引号的相同Textfile:

@echo off
if not exist "limits.txt" goto :EOF
setlocal EnableDelayedExpansion
del "limits_new.txt" 2>nul
for /F "usebackq delims=" %%I in ("limits.txt") do (
set "Line=%%I"
set "Line=!Line:"= !" 
echo !Line!>>"limits_new.txt"
)
del "limits.txt"
endlocal

那么我怎么能改变它来通过更多的文本文件,如limits1.txt test.txt并覆盖它们而没有qutation标记。

谢谢您的帮助!!

答案

你可以使用另一个for,并用你正在使用的变量替换整个文件名:

@echo off

for %%f in (*.txt) do (
    setlocal EnableDelayedExpansion
    del "%%f.new" 2>nul
    for /F "usebackq delims=" %%I in ("%%f") do (
        set "Line=%%I"
        set "Line=!Line:"= !" 
        echo !Line!>>"%%f.new"
    )
    del "%%f"
    ren "%%f.new" "%%f"
    endlocal
)

这将从limits.txt生成limits.txt.new,然后用新版本替换原始的limits.txt。如果你想保留limits_new.txt命名约定,那么我认为你想要%%~nf_new.txt作为输出文件名并删除ren

请注意,如果你有sed,例如从Git Bash,您可以使用正则表达式进行就地文件编辑:

sed -i -e "s/"/ /g" limits.txt

和Git Bash有类似的for,您可以使用它来更新所有文件,例如

for _f in *.txt; do sed -i -e 's/"/ /g' $_f; done

但要注意:取决于你从哪里得到你的sed也可能会将所有的行结尾从CRLF切换到只有LF。

以上是关于创建批处理文件以浏览文本文件并删除所有引号的主要内容,如果未能解决你的问题,请参考以下文章

删除文本中所有双引号(python csv)

将包含超过255个字段的制表符分隔文本文件导入两个访问表的工作代码

Python在文件中查找字符串,编辑行并保存到新文件

RegEx - 在引号之间查找文本并在括号之间替换

批处理文件删除额外文件

为啥我的 Linux 文本文件(使用 echo 创建)以换行符结尾?我怎样才能删除它? [复制]