Пакетный файл — копирование большого количества текста в файл .txt.

Я хочу, чтобы, когда я нажимаю на пакетный файл, он копировал МНОГО материала в пакетный файл, я пробовал это с помощью метода >> ( echo example>>example.txt ), и он копирует только половину того, что я хочу его для копирования, у меня много строк, поэтому мне было интересно, есть ли максимальное количество строк для копирования, и если нет, то почему он не копирует все, что я хочу скопировать? (Я хочу, чтобы он скопировал около 150 строк) РЕДАКТИРОВАТЬ: это то, что я пытаюсь сделать:

SET FILECONTENTS=1.) In the url of the item you want to use the buy button on, Put Javascript:startbuy();^  
 2.) Inspect element on buy button.^  
 3.) Put the code at the bottom in it.^  
 4.) You now no longer need to refresh once the item goes onsale.^  
 <input type="submit" class="newPurchaseButton" value=""^  
ECHO %FILECONTENTS%>>testingfile.txt

Пока это не работает.


person user1650396    schedule 05.09.2012    source источник
comment
Добро пожаловать в StackOverflow. Что он должен копировать? (Чтобы скопировать, должен быть источник для копирования и место назначения для копирования - вы предоставили только половину этого уравнения.) Вам нужно отредактировать свой вопрос, чтобы предоставить более подробную информацию, и опубликовать код, который вы используете, работает не так, как вы ожидаете. Также было бы полезно, если бы вы упомянули, что такое пакетный файл, поскольку в своем вопросе вы не упомянули язык. (Я предполагаю, что это пакет Windows, но вам действительно нужно указать это для нас, если вам нужна помощь.)   -  person Ken White    schedule 06.09.2012


Ответы (2)


Большинство людей делают это неправильно, используя в скрипте сотню операторов echo, по одному на строку, но есть и лучший способ. Лучший способ сделать это:

@echo off
setlocal EnableDelayedExpansion
set "LA=^<"
set "RA=^>"
:: 2 blank lines required below set NLM !
set NLM=^


set NL=^^^%NLM%%NLM%^%NLM%%NLM%

SET FILECONTENTS=^
 1.) In the url of use the buy button on, Put Javascript:startbuy();!NL!^
 2.) Inspect element on buy button.!NL!^
 3.) Exclamation^^! Put the code at the bottom in it.!NL!^
 4.) You now no longer need to refresh once the item goes onsale.!NL!^
 !LA!input type=^"submit^" class=^"newPurchaseButton^" value=^"^"!RA!

ECHO %FILECONTENTS%
ECHO %FILECONTENTS%>>test.txt     
pause
person djangofan    schedule 06.09.2012
comment
Символ новой строки \n не работает в Windows, но символ продолжения ^ работает. - person James K; 06.09.2012
comment
Итак, если я сделаю это: SET FILECONTENTS= (здесь вся информация) \n echo %filecontents%››file.txt все это попадет в файл? - person user1650396; 06.09.2012
comment
Хорошо, я удалил \n в вашем коде, и это сработало, но по какой-то причине это не работает в моем коде. - person user1650396; 07.09.2012
comment
Есть ли максимальное количество строк, которое он может скопировать? - person user1650396; 07.09.2012
comment
Максимальная длина составляет 8191 символ в 32-битной оболочке WindowsXP/7, поэтому вам нужно немного разбить ее. Как видите, задержка расширения была ключом к разгадке. - person djangofan; 10.09.2012

Ваш код не работает, так как вы пытаетесь использовать символы <>, но это специальные символы для пакетной обработки (они зарезервированы для перенаправлений).

Но вы можете избежать их, и, кроме того, вы должны использовать отложенное расширение для команды echo, чтобы избежать той же проблемы.

setlocal EnableDelayedExpansion
SET FILECONTENTS=^
 1.) In the url of the item you want to use the buy button on, Put Javascript:startbuy();^
 2.) Inspect element on buy button.^
 3.) Put the code at the bottom in it.^
 4.) You now no longer need to refresh once the item goes onsale.^
 ^<input type="submit" class="newPurchaseButton" value=""^>

>>testingfile.txt ECHO !FILECONTENTS!

EDIT: альтернативный способ

Если вы также хотите создать перевод строки, вы можете использовать простые операторы эха в блоке.

(
  echo 1.^) In the url of the item you want to use the buy button on, Put Javascript:startbuy(^);
  echo 2.^) Inspect element on buy button.
  echo 3.^) Put the code at the bottom in it.
  echo 4.^) You now no longer need to refresh once the item goes onsale.
  echo ^<input type="submit" class="newPurchaseButton" value=""^>
) > testingfile.txt

Для получения дополнительных решений вы можете прочитать SO: разделение строки с двойными кавычками на несколько строк в пакетной программе Windows

person jeb    schedule 07.09.2012
comment
Этот код, который был копией моего первоначального ответа от 6 сентября, не работает. Я исправил это и отредактировал свой комментарий, чтобы показать полностью рабочий фрагмент кода. - person djangofan; 10.09.2012
comment
Код работает, так как я внес два важных изменения в ваш образец, специальные символы экранированы, и я повторяю содержимое с отложенным расширением. - person jeb; 10.09.2012
comment
Я не согласен. Я только что снова попробовал ваш фрагмент кода (сделанный 9 сентября), и он не работает. - person djangofan; 10.09.2012
comment
Я предполагаю, что у вас возникла та же проблема, что и у меня, когда переводы строк не записываются в ваш файл. На самом деле вы не указали никаких переводов строк, но, похоже, именно это и имел в виду пользователь. Кроме того, вы еще не видите этого в своем коде, но есть проблема с использованием левого перенаправления с переводом строки в строке, даже если вы думаете, что экранируете правильно. - person djangofan; 10.09.2012
comment
@djangofan Нет, это не проблема, так как использование !FILECONTENTS! защищен от любого контента, в отличие от процентного расширения - person jeb; 13.09.2012
comment
Вау! Хороший трюк со скобками. Я этого не знал. На самом деле это лучше, чем мое решение, поскольку оно не оставляет пустого места в начале строк. Удивительная находка. Спасибо. - person djangofan; 14.09.2012