Компьютерный форум 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=327330)

alexfeel30 04-06-2017 15:15 2742039

Копирование строки из файла в файл
 
Здравствуйте! Нужно скопировать первую строку одного файла, и вставить в первую строку второго файла. Помогите сделать батник.

megaloman 04-06-2017 16:59 2742067

Код:

@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 2742068

Код:

@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 2742099

megaloman,
Работает, но при повторном запуске во втором файле появляется вторая третья и тд. строки, можно сделать чтоб только заменялась первая строка без добавления новых строк?

greg zakharov,
Не разобрался как прописать путь к файлам, пробовал по разному, не работает.

megaloman 04-06-2017 19:21 2742102

alexfeel30,
Цитата:

Цитата alexfeel30
... при повторном запуске во втором файле появляется вторая третья и тд. строки, можно сделать чтоб только заменялась первая строка без добавления новых строк? »

Естественно будут добавляться. Есть второй файл и, как я понял постановку задачи, из первого файла добавляется первая строка в начало второго файла. Правда, Вы использовали выражение "вставить в первую" - как это понять? Или Вам надо вместо первой строки второго файла вставить первую сроку первого? Тогда, если реализовать такую постановку, батник можно запустить хоть 1000 раз с одинаковым результатом.

alexfeel30 04-06-2017 19:25 2742104

Цитата:

Цитата megaloman
Или Вам надо вместо первой строки второго файла вставить первую сроку первого? »

Да так и нужно.

Iska 04-06-2017 19:30 2742106

Цитата:

Цитата alexfeel30
Не разобрался как прописать путь к файлам, пробовал по разному, не работает. »

Там же написано явным образом (и даже с примером) — параметрами пакетного файла.

alexfeel30 04-06-2017 19:52 2742108

Цитата:

Цитата megaloman
Тогда, если реализовать такую постановку, батник можно запустить хоть 1000 раз с одинаковым результатом. »

Да но текст в первой строке первого файла изменяется, и мне нужно чтобы при запуске батника, во втором файле в первой строке был такой же текст.

megaloman 04-06-2017 21:10 2742117

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 2742127

megaloman,
Работает, огромное спасибо.

alpap 05-06-2017 02:13 2742160

еще вариант
Код:

@echo off
<file1.txt set /p s1=
>tmp (echo:%s1%& <file2.txt more +1)& >nul move tmp file2.txt
exit



Время: 03:09.

Время: 03:09.
© OSzone.net 2001-