Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] дописать строчки (http://forum.oszone.net/showthread.php?t=144669)

spilberg 10-07-2009 01:13 1163447

дописать строчки
 
Нужен батник который сможет заменить в файле my.txt все пробелы на - и дописать вначале и в конце строчки несколько слов и вконце файла несколько строк.

Например фаил my.txt:
aaaaaaaa aaaaaaaaa
bbbbbbbb bbbbbbbbb
cccccccccc cccccccccccc

Надо чтоб он стал таким:
my aaaaaaaa-aaaaaaaaa you
my bbbbbbbb-bbbbbbbbb you
my cccccccccc-cccccccccccc you
hello
hi

Очень надо помогите пожалуйста если это возможно ((((

Iska 10-07-2009 03:06 1163475

Попробуйте что-то наподобие такого:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set strSourceFileName=%~1
set strTextBefore=%~2
set strTextAfter=%~3
set strFinishFileName=%~4

set strTempFileName=%temp%\tmp%random%.tmp
if exist "%strTempFileName%" del "%strTempFileName%"

if defined strSourceFileName (
    if exist "%strSourceFileName%" (
        for /f "tokens=* delims=" %%i in (!strSourceFileName!) do (
            set strLine=%%i
            echo %strTextBefore%!strLine: =-!%strTextAfter%>>"%strTempFileName%"
        )
       
        if exist "%strFinishFileName%" copy /b "%strTempFileName%"+"%strFinishFileName%" "%strTempFileName%" >nul
        move /y "%strTempFileName%" "%strSourceFileName%" >nul
    )
) else (
    echo Using: %~nx0 ^<File name^> ^<Text before^> ^<Text after^> ^<File name with finish text^>
)

endlocal
exit /b 0

Вызов пакетного файла:
Код:

mycmd.cmd my.txt "my " you" finishtext.txt
где «finishtext.txt» — текстовый файл, содержащий финальные строки:
Код:

hello
hi


Maza Faka 10-07-2009 07:35 1163513

spilberg
Быстро, эффективно и без проблем со спец. символами, если использовать SED.EXE
Код:

@Echo Off

Type test.txt | Sed "s/ /-/g" | Sed "s/.*/my & you/g">result.txt
Echo hello>>result.txt
Echo hi>>result.txt


Devils0411 19-07-2009 19:16 1172093

Возможно ли средствами пакетного файла сделать следующее:
при команде ipconfig, выдает адрес компьютера. Как этот адрес скопировать и заменить в файле winnt.sif?

Код:

[data]
AutoPartition=0
MsDosInitiated=1
AutomaticUpdates="yes"
UnattendedInstall="Yes"
floppyless="1"
LocalSourceOnCD=1
OriSrc="\\192.168.10.11\NETBOOT\WINXPSP3\INSTALL\I386"
OriTyp="4"


amel27 20-07-2009 08:44 1172492

Devils0411, через WMI - без замены, но с добавлением в конец:
Код:

@Echo On

Set WSIF=C:\TEST\winnt.sif

For /F "Tokens=2 Delims=={,} " %%i In ('WMIC NICCONFIG Where IPEnabled^=True Get IPAddress /Value^') Do Set $IP=%%~i
For /F "Tokens=2 Delims==" %%i In ('FindStr /IB "OriSrc=" "%WSIF%"') Do For /F "Tokens=1* Delims=\" %%a In (%%i) Do Set $V="\\%$IP%\%%b"

FindStr /VIB "OriSrc=" "%WSIF%" >"%TEMP%\%~n0.tmp"
Echo.>>"%TEMP%\%~n0.tmp"
Echo [data]>>"%TEMP%\%~n0.tmp"
Echo OriSrc=%$V%>>"%TEMP%\%~n0.tmp"

If Exist "%TEMP%\%~n0.tmp" Copy /Y "%TEMP%\%~n0.tmp" "%WSIF%"



Время: 15:33.

Время: 15:33.
© OSzone.net 2001-