#string #insert #text-files
#строка #вставить #текстовые файлы
Вопрос:
Я пытаюсь вставить определенную строку с пробелами «sBody = » перед каждой строкой в текстовом документе. Я нашел этот ответ на других форумах, но он не работает? У меня есть несколько вопросов по поводу этого скрипта: должен ли «myfile» быть полным путем к файлу? Кроме того, этот скрипт изначально был создан для вставки строки в конец файла, что мне нужно извлечь, чтобы заставить его вставить только одну строку в начале?
Спасибо за все ваши ответы!
@echo off > newfile amp; setLocal EnableDelayedExpansion
for /f "tokens=* delims=" %%a in (myfile) do (
echo STRING %%a STRING >> newfile
)
Комментарии:
1. Вам нужно будет отобразить вашу строку в новый файл, затем добавить исходный файл к этому новому файлу, затем заменить оригинал этим новым файлом.
>>
только добавляет, оно не будет предварять.
Ответ №1:
Скрипт создает новый файл с именем ‘newfile’, считывающий исходный файл ‘myfile’. Как только это будет сделано, вы можете удалить ‘myfile’ и переименовать ‘newfile’ в ‘myfile’, если хотите. В этом примере каждая <строка> в файле заменяется строкой <строка> STRING.
@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* delims=" %%a in (myfile) do (
echo STRING %%a STRING >> newfile
)
Комментарии:
1. Как изменить это, чтобы вставить строку в начало каждой строки, не удаляя строку? Являются ли myfile и newfile полным путем к файлу? Спасибо за помощь
2. Угловые скобки вокруг ‘line’ были сняты в исходном комментарии. (Теперь отредактировано, чтобы они отображались правильно.) Чтобы просто добавить префикс к строке, вы можете вместо этого использовать «echo STRING %%a >> newfile»
3. Всегда пожалуйста. [Мне нужно помнить о том, что в тексте ответа используются элементы, подобные <tag> .]
4. Я использую это постоянно, теперь мне нужно вставить символ amp;, а он его не принимает. Могу ли я заключить ее в какие-нибудь квадратные скобки или что-то в этом роде, потому что это специальный символ? Спасибо за помощь.
5. В данный момент у меня нет рядом компьютера с Windows, чтобы проверить это, но, если я помню, вы можете экранировать специальный символ, поставив перед ним ^. Возможно , вам нужно убедиться, что она находится в .cmd, а не в .bat файле.
Ответ №2:
sed 's/.*/pattern amp;/' yourfile.txt -i
у меня работает в одной командной строке