PDA

Показать полную графическую версию : [решено] батник


angel_lyucifer
09-08-2013, 05:15
Привет все, мне нужны два батника.
1.) Есть два файла timeout.txt и data.txt в файле timeout.txt всего одна строка а в файле data.txt четыре.
Как скопировать из файла timeout.txt одну строку и вставить ее в конец файла data.txt?

2.) Мне нужен второй батник чтобы он удалял пятую строку в файле data.txt а другие строки он не трогал.
Как это сделать, помогите пожалуйста?

Iska
09-08-2013, 05:34
1.
copy /a data.txt+timeout.txt data.txt

2.
@echo off
setlocal enableextensions enabledelayedexpansion

call :GetTemporaryName

>"%TemporaryName%" (
for /f "usebackq tokens=1,2* delims=[]" %%i in (
`type "data.txt" ^| find.exe /v /n ""`
) do if %%i neq 5 echo.%%j
)

copy /y "%TemporaryName%" "data.txt"
del /f /q "%TemporaryName%"

endlocal
exit /b 0

rem ==========================================================================
rem Функция GetTemporaryName()
rem
rem Серый форум / CMD/BAT: генерация пути для временного файла или папки
rem (http://forum.script-coding.com/viewtopic.php?id=6259)
rem ==========================================================================
:GetTemporaryName
setlocal enableextensions enabledelayedexpansion

:NextName
set sTempName=%temp%\temp%random%.tmp

if exist "%sTempName%" goto :NextName

set sProcName=%~0

endlocal & set %sProcName:~4%=%sTempName%
exit /b 0
rem ==========================================================================

angel_lyucifer
09-08-2013, 20:29
copy /a data.txt+timeout.txt data.txt »
Копирование происходит не корректно, такой способ объединяет две строки четвёртую и пятую в одну и добавляя вместо нормальной строки, вот такую китайскую грамоту 㔣瑟浩彥汶ᩰ.
Почему такая китайская грамота, я не понимаю...

angel_lyucifer
10-08-2013, 02:44
@echo off setlocal enableextensions enabledelayedexpansion call :GetTemporaryName >"%TemporaryName%" ( for /f "usebackq tokens=1,2* delims=[]" %%i in ( `type "data.txt" ^| find.exe /v /n ""` ) do if %%i neq 5 echo.%%j ) copy /y "%TemporaryName%" "data.txt" del /f /q "%TemporaryName%" endlocal exit /b 0 rem ========================================================================== rem Функция GetTemporaryName() rem rem Серый форум / CMD/BAT: генерация пути для временного файла или папки rem (http://forum.script-coding.com/viewtopic.php?id=6259) rem ========================================================================== :GetTemporaryName setlocal enableextensions enabledelayedexpansion :NextName set sTempName=%temp%\temp%random%.tmp if exist "%sTempName%" goto :NextName set sProcName=%~0 endlocal & set %sProcName:~4%=%sTempName% exit /b 0 rem ========================================================================== »
Спасибо, второй батник работает! -)




© OSzone.net 2001-2012