Показать полную графическую версию : [решено] Заменить в конце строк " /f на "/f >nul
Заменить в конце строк (кодировка 866):
" /f
на
"/f >nul
Причина: надоело вводить вручную (много!).
Со спецсимволами замучился...
Буду рад помощи (только CMD/BAT)!
Типа такого?
Проверили последние два символа, и если требуется, то прилепили строку с символами, а после создали новый файл.
@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,
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...
DJ Mogarych
14-10-2024, 09:58
Хоть и не просили, тем не менее, вот вариант на 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
}
}
DJ Mogarych,
Спасибо. Красиво. Однако именно для меня на текущиий момент бесполезно.
Нужен именно CMD/BAT!!!!!!!!!
P.S. До Powershell, наверное, доберусь уже на пенсии или еще позже...
Изменил код выше.
Проверили последние два символа и перезаписали файл.
NickM,
СПАСИБО! именно то, что нужно!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC