Показать полную графическую версию : [решено] Копирование строки из файла в файл
alexfeel30
04-06-2017, 15:15
Здравствуйте! Нужно скопировать первую строку одного файла, и вставить в первую строку второго файла. Помогите сделать батник.
megaloman
04-06-2017, 16:59
@Echo OFF
Set "File1=Z:\Box_In\Filename1"
Set "File2=Z:\Box_Arc\Filename2"
>"%File2%.tmp" (FOR /F "usebackq delims=" %%i IN ("%File1%") DO Echo %%i& GoTo :Continue)
:Continue
Copy /B "%File2%.tmp"+"%File2%" "%File2%.tmp" >nul
Move /Y "%File2%.tmp" "%File2%" >nul
greg zakharov
04-06-2017, 17:00
@echo off
setlocal enabledelayedexpansion
set "i=0" % rem : аргументы
for %%i in (%*) do set /a "i+=1"
if !i! neq 2 goto:err
3<"%~1" (set /p f=<&3)
echo !f!>"%~2:s"&&type "%~2">>"%~2:s"
more < "%~2:s" > "%~2"
endlocal
exit /b
:err
for %%i in (
"=> err: not enought parameters"
""
"Usage: %~n0 <from_file> <to_file>"
".e.g.: C:\src> %~n0 file1.txt file2.txt"
) do echo:%%~i
exit /b 3
alexfeel30
04-06-2017, 19:13
megaloman,
Работает, но при повторном запуске во втором файле появляется вторая третья и тд. строки, можно сделать чтоб только заменялась первая строка без добавления новых строк?
greg zakharov,
Не разобрался как прописать путь к файлам, пробовал по разному, не работает.
megaloman
04-06-2017, 19:21
alexfeel30, ... при повторном запуске во втором файле появляется вторая третья и тд. строки, можно сделать чтоб только заменялась первая строка без добавления новых строк? »
Естественно будут добавляться. Есть второй файл и, как я понял постановку задачи, из первого файла добавляется первая строка в начало второго файла. Правда, Вы использовали выражение "вставить в первую" - как это понять? Или Вам надо вместо первой строки второго файла вставить первую сроку первого? Тогда, если реализовать такую постановку, батник можно запустить хоть 1000 раз с одинаковым результатом.
alexfeel30
04-06-2017, 19:25
Или Вам надо вместо первой строки второго файла вставить первую сроку первого? »
Да так и нужно.
Не разобрался как прописать путь к файлам, пробовал по разному, не работает. »
Там же написано явным образом (и даже с примером) — параметрами пакетного файла.
alexfeel30
04-06-2017, 19:52
Тогда, если реализовать такую постановку, батник можно запустить хоть 1000 раз с одинаковым результатом. »
Да но текст в первой строке первого файла изменяется, и мне нужно чтобы при запуске батника, во втором файле в первой строке был такой же текст.
megaloman
04-06-2017, 21:10
alexfeel30, @Echo OFF
Set "File1=Z:\Box_In\filename1"
Set "File2=Z:\Box_Arc\filename2"
>"%File2%.tmp" (FOR /F "usebackq delims=" %%i IN ("%File1%") DO Echo %%i& more +1 "%File2%" &GoTo :Continue)
:Continue
Move /Y "%File2%.tmp" "%File2%" >nul
alexfeel30
04-06-2017, 22:11
megaloman,
Работает, огромное спасибо.
еще вариант
@echo off
<file1.txt set /p s1=
>tmp (echo:%s1%& <file2.txt more +1)& >nul move tmp file2.txt
exit
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.