Zhenyok21,
Вот так
[spoiler]Код:
[/spoiler]
Код: Выделить всё
@Echo Off
cls
Set "File=SH.INI"
Set "Seek=SIZE_LOG_FILE_KB="
Set "Replace=SIZE_LOG_FILE_KB=5120"
Set "BoxIn=Z:\Box_In"
FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File%" /S /B /A:-D 2^>nul`) DO (
Echo %%f
>"%%f.tmp" (FOR /F "usebackq tokens=*" %%s IN (`More "%%f"`) DO (
If Not "%%s"=="" (
Echo %%s|FindStr.exe /B /L /I /C:"%Seek%" >nul &&Echo %Replace%|| Echo %%s
)
))
Move /Y "%%f.tmp" "%%f" >nul
)
pause
Или, ИМХО, быстрее работает так
[spoiler]Код:
[/spoiler]
Код: Выделить всё
@Echo Off
cls
Set "File=SH.INI"
Set "Seek=SIZE_LOG_FILE_KB"
Set "Replace=SIZE_LOG_FILE_KB=5120"
Set "BoxIn=Z:\Box_In"
FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File%" /S /B /A:-D 2^>nul`) DO (
Echo %%f
>"%%f.tmp" (FOR /F "usebackq tokens=*" %%s IN (`More "%%f"`) DO (
If Not "%%s"=="" (
For /F "tokens=1 delims==" %%i In ("%%s") Do If /I "%%i"=="%Seek%" (Echo %Replace%) Else (Echo %%s)
)
))
Move /Y "%%f.tmp" "%%f" >nul
)
pause
В любом из вариантов, в том числе и в Вашем, пустые и пробельные строки будут убиты.
Busla, для for /R ..... если файл называется, например, не "sh.ini", а "s h.ini", у меня этот номер не прошел:
[spoiler]если
Код:
[/spoiler]
Код: Выделить всё
@Echo Off
cls
Set "File=S H.INI"
Set "BoxIn=Z:\Box_In"
FOR /R "%BoxIn%" %%f IN (%File%) DO Echo %%f
pause
То получим:
Z:\Box_In\S
Z:\Box_In\H.INI
Z:\Box_In\Mail\S
Z:\Box_In\Mail\H.INI
Z:\Box_In\Mail jsdgjh\S
Z:\Box_In\Mail jsdgjh\H.INI
Z:\Box_In\Папка jsdgjh\S
Z:\Box_In\Папка jsdgjh\H.INI
если
Код:
Код: Выделить всё
FOR /R "%BoxIn%" %%f IN ("%File%") DO Echo %%f
То получим:
Z:\Box_In\"S H.INI"
Z:\Box_In\Mail\"S H.INI"
Z:\Box_In\Mail jsdgjh\"S H.INI"
Z:\Box_In\Папка jsdgjh\"S H.INI"