Создание пакетного файла для просмотра текстовых файлов и удаления всех кавычек - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь написать пакетный файл, который просматривает все текстовые файлы в одной папке и удаляет кавычки в каждом текстовом файле, но также перезаписывает их, чтобы они по-прежнему имели одинаковые имена файлов.

Я уже написал командный файл, который делает это с одним конкретным текстовым файлом, который называется limit.txt, а затем сохраняет тот же текстовый файл без кавычек в limit_new.txt:

@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

Так, как я могу изменить это, чтобы пройти больше текстовых файлов, таких как limit1.txt test.txt и перезаписать их без кавычек .?

Спасибо за помощь !!

1 Ответ

0 голосов
/ 31 августа 2018

Вы можете просто использовать другой 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
)

Это сгенерирует limit.txt.new из limit.txt, а затем заменит исходный limit.txt новой версией. Если вы хотите сохранить соглашение об именах limit_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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...