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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Заменить в конце строк " /f на "/f >nul

Ответить
Настройки темы
CMD/BAT - [решено] Заменить в конце строк " /f на "/f >nul

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


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

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


Заменить в конце строк (кодировка 866):
Код: Выделить весь код
" /f
на
Код: Выделить весь код
"/f >nul
Причина: надоело вводить вручную (много!).
Со спецсимволами замучился...
Буду рад помощи (только CMD/BAT)!

Отправлено: 04:09, 14-10-2024

 

Аватара для NickM

Ветеран


Contributor


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

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


Типа такого?

Проверили последние два символа, и если требуется, то прилепили строку с символами, а после создали новый файл.
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion
 
set "ext=.bat"
set "addstr= >nul"
set "compstr=/f"

for /f "tokens=* delims=" %%i in ('dir "%~dp0*%ext%" /b /a-d') do ( 
 set "src=%%~i"
 for /f "delims=" %%? in ('type "!src!"^& del /f /q "!src!"') do (
  set "t=%%?"
  call set "tmpstr=%%t:~-2%%"
  if "!tmpstr!" NEQ "!compstr!" ( 
   echo.!t!>>"!src!"
  )
  if "!tmpstr!" EQU "!compstr!" ( 
   call set "tmpstr=%%t%%%%addstr%%"
   echo.!tmpstr!>>"!src!"
  )
 )
)

Последний раз редактировалось NickM, 14-10-2024 в 15:05.

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

Отправлено: 07:33, 14-10-2024 | #2



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

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


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


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

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


NickM,
1) Кавычки в обоих кодах - это часть обрабатываемого текста...
2) Нужно обработать только концы строк, заканчивающихся этим:
Код: Выделить весь код
" /f
Другими словами (для примера), input:
Код: Выделить весь код
Reg Add "HKCR\..HEXADEC" /v "гд_" /t REG_BINARY /d "ddff" /f
Reg Add "HKCR\..HEXADEC" /v "гд_0" /t REG_NONE /d "dd,ff" /f
::          Утилита Reg не поддерживает тип данных - hex(1):
::          Проигнорирована строка "гд_1"=hex(1):dd,ff
Reg Add "HKCR\..HEXADEC" /v "гд_2" /t REG_EXPAND_SZ /d "dd,ff" /f
output:
Код: Выделить весь код
Reg Add "HKCR\..HEXADEC" /v "гд_" /t REG_BINARY /d "ddff" /f >nul
Reg Add "HKCR\..HEXADEC" /v "гд_0" /t REG_NONE /d "dd,ff" /f >nul
::          Утилита Reg не поддерживает тип данных - hex(1):
::          Проигнорирована строка "гд_1"=hex(1):dd,ff
Reg Add "HKCR\..HEXADEC" /v "гд_2" /t REG_EXPAND_SZ /d "dd,ff" /f >nul
для всех *.bat, находящихся на одном уровне с будущим батником.

P.S. Смотрю в сторону Findstr...

Последний раз редактировалось dassen, 14-10-2024 в 15:30.


Отправлено: 09:46, 14-10-2024 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Хоть и не просили, тем не менее, вот вариант на Powershell v5.
Изменяются только те файлы, где есть искомый паттерн (в конце строки).
Код: Выделить весь код
$files = dir C:\temp\*.bat

foreach ($f in $files) {
$content = gc $f.fullname -Encoding Oem
    if ($content -match '\" /f$') {
        $content -replace '\" /f$','" /f >nul' |Set-Content $f.fullname -Encoding Oem
    }
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 09:58, 14-10-2024 | #4


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


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

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


DJ Mogarych,
Спасибо. Красиво. Однако именно для меня на текущиий момент бесполезно.
Нужен именно CMD/BAT!!!!!!!!!

P.S. До Powershell, наверное, доберусь уже на пенсии или еще позже...

Отправлено: 10:44, 14-10-2024 | #5


Аватара для NickM

Ветеран


Contributor


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

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


Изменил код выше.

Проверили последние два символа и перезаписали файл.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:47, 14-10-2024 | #6


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


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

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


NickM,
СПАСИБО! именно то, что нужно!

Отправлено: 11:01, 14-10-2024 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Заменить в конце строк " /f на "/f >nul

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2010 - [решено] Как удалить все строки в Word 2010 по результатам работы "Поиск" и "Заменить"? flev45 Microsoft Office (Word, Excel, Outlook и т.д.) 30 16-05-2019 20:42
CMD/BAT - [решено] Если в строке есть 2-ва "ть" заменить на "ла" papacoca Скриптовые языки администрирования Windows 5 31-12-2014 17:36
CMD/BAT - [решено] Нужно создать "батник" - вырезать из "2.txt" первых n строк и вставить их в "1.txt" temphard Скриптовые языки администрирования Windows 12 10-01-2014 18:36
CMD/BAT - как удалить ">" из строки типа “>>…>>c:\program files\dir\mir\doc.skok” akrav Скриптовые языки администрирования Windows 1 14-02-2008 16:35
[решено] Ищу ссылку на описание команд в "Пуск" -> "Выполнить" Volan Microsoft Windows 2000/XP 3 29-06-2006 15:50




 
Переход