Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Текстовые файлы

Ответить
Настройки темы
CMD/BAT - Текстовые файлы

Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброе время!
Прошу помощи, для создания батника нужно в текстовый файл нужно удалить знак пробел перед знаком "]" это знак не везде встречается в текстовом файле.

Отправлено: 12:12, 09-08-2019

 

Старожил


Сообщения: 427
Благодарности: 72

Профиль | Отправить PM | Цитировать


обрабатывать нужно 1 текстовой файл?

Отправлено: 13:30, 09-08-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Да, обрабатывается 1 файл. Имя этих файлов разное но расширение одно.

Отправлено: 13:32, 09-08-2019 | #3


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


0. открываем файл обычным блокнотом
1. нажимаем Ctrl + H
2. В верхнем поле пишем " ]" (без кавычек, разумеется)
3. в нижнем - "]" (опять же без кавычек)
4. нажимаем "Replace all" (или "Заменить все" - кто под каким языком сидит)
5. сохраняем, закрываем

и ненадо придумывать батники.

Отправлено: 15:30, 09-08-2019 | #4


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


AKadekin, Я Вас умоляю, не связывайтесь с CMD для обработки текстовых файлов. Вот vbs. Взято с мизерными изменениями здесь.
Имя файла можно прописывать явным образом в скрипте, либо указывать в аргументе скрипта в кавычках при вызове, либо создать, например, на рабочем столе значок на этот скрипт и в проводнике затягивать на него мышкой обрабатываемый файл
Код: Выделить весь код
FileIn = "Z:\Box_In\playlist.txt"

RegExp = "  *]"
Rep="]"

With WScript.Arguments
    If .Count <> 0 Then FileIn = .Item(0)
End With

With CreateObject("Scripting.FileSystemObject")
    On Error Resume Next
    With .OpenTextFile(FileIn, 1)
        If Err.Number <> 0 Then
            MsgBox "Error open file " + vbCrLf + vbCrLf + FileIn + vbCrLf + vbCrLf + "Err.Number " + CStr(Err.Number) + vbCrLf + Err.Description
            WScript.Quit 1
        End If
        InTxt = .ReadAll
        If Err.Number <> 0 Then
            MsgBox "Error read file " + vbCrLf + vbCrLf + FileIn + vbCrLf + vbCrLf + "Err.Number " + CStr(Err.Number) + vbCrLf + Err.Description
            WScript.Quit 1
        End If
        .Close
        On Error GoTo 0
    End With
            
    With CreateObject("VBScript.RegExp")
        .Pattern = RegExp
        .IgnoreCase = True
        .Global = True
	If Not .Test(InTxt) Then
            MsgBox "no substrings to replace. Reg expression:" + vbCrLf + vbCrLf + """" + RegExp + """"
            WScript.Quit 1
	End If
        Result = .Replace(InTxt, Rep)
    End With
    
    With .CreateTextFile(FileIn, True)
        .Write Result
        .Close
    End With
    
End With
MsgBox "Done!"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:53, 09-08-2019 | #5


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


так вот он нужен .. так как в день нужно быстро передать и таких файлов может быть много больше 30
Вероятность, что будет ошибка есть.

так вот он нужен .. так как в день нужно быстро передать и таких файлов может быть много больше 30
Вероятность, что будет ошибка есть.

Отправлено: 16:45, 09-08-2019 | #6


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Цитата AKadekin:
обрабатывается 1 файл »
Цитата AKadekin:
таких файлов может быть много больше 30 »
вопрос от Ageron задавался не просто так.
Кроме этого хорошо бы знать расположение этих файлов (все в одной папке или в разных, меняется ли расположение этой папки/папок), по какому принципу должны отбираться файлы (нет ли среди тех которые нужно обработать те которые обрабатывать ненужно/нельзя), могут ли быть варианты в которых пробелов перед ] будет больше одного и как поступать в таких случаях. Возможно еще какие-то варианты нужно предусмотреть (кодировку, например), ну и (не факт, но возможно) кто-то затребует пример исходного файла.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:39, 09-08-2019 | #7


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Если файл один, Имя можно прописывать явным образом в скрипте.
Если один или несколько, их можно перечислить в аргументе скрипта в кавычках при вызове.
Можно создать значок на скрипт на, например, рабочем столе, помечать в проводнике файл или группу файлов и в проводнике затягивать на него мышкой помеченные файлы
Код: Выделить весь код
FileIn1 = "Z:\Box_In\playlist.txt"

RegExp = "  *]"
Rep = "]"

ReDim FileIn(0)
MM = 0
FileIn(0) = FileIn1

With WScript.Arguments
    If .Count <> 0 Then
    MM = .Count - 1
    ReDim FileIn(MM)
    For m = 0 To MM
            FileIn(m) = .Item(m)
    Next
    End If
End With

Msg = ""
Set FSO = CreateObject("Scripting.FileSystemObject")
For m = 0 To MM
    If Contr1(FSO, FileIn(m), InTxt, Msg) Then
        If Contr2(FileIn(m), RegExp, InTxt, Rep, Msg) Then
            With FSO.CreateTextFile(FileIn(m), True)
                .Write InTxt
                .Close
                Msg = Msg + FileIn(m) + " ==Done" + vbCrLf
            End With
        End If
    End If
Next
MsgBox Msg

Function Contr1(FSO, fName, txt, MS)
    Contr1 = False
    On Error Resume Next
    With FSO.OpenTextFile(fName, 1)
        If Err.Number <> 0 Then
            MS = MS + "--- " + fName + vbCrLf + "    Error open file. Err.Number=" + CStr(Err.Number) + "  " + Err.Description + vbCrLf
            On Error GoTo 0
            Exit Function
        End If
        txt = .ReadAll
        If Err.Number <> 0 Then
            MS = MS + "--- " + fName + vbCrLf + "    Error read file. Err.Number=" + CStr(Err.Number) + "  " + Err.Description + vbCrLf
            On Error GoTo 0
            Exit Function
        End If
        .Close
    End With
    On Error GoTo 0
    Contr1 = True
End Function

Function Contr2(fName, RExp, txt, RR, MS)
    Contr2 = False
    With CreateObject("VBScript.RegExp")
        .Pattern = RExp
        .IgnoreCase = True
        .Global = True
        If Not .Test(txt) Then
            MS = MS + "--- " + fName + vbCrLf + "    no replace." + "    Reg expression: " + """" + RExp + """" + vbCrLf
            Exit Function
        End If
        txt = .Replace(txt, RR)
    End With
    Contr2 = True
End Function

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 21:33, 09-08-2019 | #8


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Файлы находятся в одной папке потом они перемещаются в разные папки.
Файлы которые нужно обработать имеют расширения *.AX1 и *.MX1 и они находятся в одной папке.
После обработки перед перемещением их нужно переименовать в *.MIX (бывший *.AX1 - ложится в одну папку, другой в другую)
Эти файлы содержат разные данные но "структура" одинаковая. В этих файлах нужно перед знаком ] убрать пробел. Там всегда один пробел лишний.
Расположение папок фиксировано не меняется.
Все что нужно.

Файлы находятся в одной папке потом они перемещаются в разные папки.
Файлы которые нужно обработать имеют расширения *.AX1 и *.MX1 и они находятся в одной папке.
После обработки перед перемещением их нужно переименовать в *.MIX (бывший *.AX1 - ложится в одну папку, другой в другую)
Эти файлы содержат разные данные но "структура" одинаковая. В этих файлах нужно перед знаком ] убрать пробел. Там всегда один пробел лишний.
Расположение папок фиксировано не меняется.
Все что нужно.

Отправлено: 09:20, 10-08-2019 | #9


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата AKadekin:
Файлы находятся в одной папке »
В какой?

Цитата AKadekin:
потом они перемещаются в разные папки. »
В какие?

Цитата AKadekin:
Файлы которые нужно обработать имеют расширения *.AX1 и *.MX1 и они находятся в одной папке. »
Какие? Сколько их? Откуда они там возникают? В чём разница между *.AX1 и *.MX1, и есть ли связь между *.AX1 и *.MX1?

Цитата AKadekin:
После обработки перед перемещением их нужно переименовать в *.MIX »
А если окажутся одноимённые файлы?

Цитата AKadekin:
(бывший *.AX1 - ложится в одну папку »
В какую?

Цитата AKadekin:
другой в другую) »
В какую?

Цитата AKadekin:
Эти файлы содержат разные данные но "структура" одинаковая. В этих файлах нужно перед знаком ] убрать пробел. Там всегда один пробел лишний. »
Упакуйте по три-четыре типичных разных файла *.AX1 и *.MX1 в архив и приложите к сообщению.

Цитата AKadekin:
Расположение папок фиксировано не меняется. »
На всякий случай, ещё раз — какое именно?

P.S. Уберите задвоение текста в Вашем последнем и предпоследнем сообщениях.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:15, 10-08-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Текстовые файлы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - как сравнить текстовые файлы в папке? rsersh Скриптовые языки администрирования Windows 1 04-06-2016 22:24
CMD/BAT - Как найти текстовые файлы yaoleg2 Скриптовые языки администрирования Windows 7 10-01-2013 21:23
Прочие - Текстовые файлы Bazaroff Программное обеспечение Windows 3 25-04-2010 21:39
Не открываются текстовые файлы и изображения и к ним создались файлы с расшир. drweb leda Лечение систем от вредоносных программ 1 03-10-2009 01:22
Delphi - Текстовые файлы в Delphi Borislav Программирование и базы данных 2 11-01-2005 13:18




 
Переход