|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Текстовые файлы |
|
|
CMD/BAT - Текстовые файлы
|
Новый участник Сообщения: 14 |
Профиль | Отправить PM | Цитировать Доброе время!
Прошу помощи, для создания батника нужно в текстовый файл нужно удалить знак пробел перед знаком "]" это знак не везде встречается в текстовом файле. |
|
Отправлено: 12:12, 09-08-2019 |
Старожил Сообщения: 427
|
Профиль | Отправить PM | Цитировать обрабатывать нужно 1 текстовой файл?
|
Отправлено: 13:30, 09-08-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Да, обрабатывается 1 файл. Имя этих файлов разное но расширение одно.
|
Отправлено: 13:32, 09-08-2019 | #3 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать 0. открываем файл обычным блокнотом
1. нажимаем Ctrl + H 2. В верхнем поле пишем " ]" (без кавычек, разумеется) 3. в нижнем - "]" (опять же без кавычек) 4. нажимаем "Replace all" (или "Заменить все" - кто под каким языком сидит) 5. сохраняем, закрываем и ненадо придумывать батники. |
Отправлено: 15:30, 09-08-2019 | #4 |
Ветеран Сообщения: 2708
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать так вот он нужен .. так как в день нужно быстро передать и таких файлов может быть много больше 30
Вероятность, что будет ошибка есть. так вот он нужен .. так как в день нужно быстро передать и таких файлов может быть много больше 30 Вероятность, что будет ошибка есть. |
Отправлено: 16:45, 09-08-2019 | #6 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Цитата AKadekin:
Цитата AKadekin:
Кроме этого хорошо бы знать расположение этих файлов (все в одной папке или в разных, меняется ли расположение этой папки/папок), по какому принципу должны отбираться файлы (нет ли среди тех которые нужно обработать те которые обрабатывать ненужно/нельзя), могут ли быть варианты в которых пробелов перед ] будет больше одного и как поступать в таких случаях. Возможно еще какие-то варианты нужно предусмотреть (кодировку, например), ну и (не факт, но возможно) кто-то затребует пример исходного файла. |
||
Отправлено: 17:39, 09-08-2019 | #7 |
Ветеран Сообщения: 2708
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Файлы находятся в одной папке потом они перемещаются в разные папки.
Файлы которые нужно обработать имеют расширения *.AX1 и *.MX1 и они находятся в одной папке. После обработки перед перемещением их нужно переименовать в *.MIX (бывший *.AX1 - ложится в одну папку, другой в другую) Эти файлы содержат разные данные но "структура" одинаковая. В этих файлах нужно перед знаком ] убрать пробел. Там всегда один пробел лишний. Расположение папок фиксировано не меняется. Все что нужно. Файлы находятся в одной папке потом они перемещаются в разные папки. Файлы которые нужно обработать имеют расширения *.AX1 и *.MX1 и они находятся в одной папке. После обработки перед перемещением их нужно переименовать в *.MIX (бывший *.AX1 - ложится в одну папку, другой в другую) Эти файлы содержат разные данные но "структура" одинаковая. В этих файлах нужно перед знаком ] убрать пробел. Там всегда один пробел лишний. Расположение папок фиксировано не меняется. Все что нужно. |
Отправлено: 09:20, 10-08-2019 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата AKadekin:
Цитата AKadekin:
Цитата AKadekin:
Цитата AKadekin:
Цитата AKadekin:
Цитата AKadekin:
Цитата AKadekin:
Цитата AKadekin:
P.S. Уберите задвоение текста в Вашем последнем и предпоследнем сообщениях. |
||||||||
Отправлено: 10:15, 10-08-2019 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|