Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Добавление строки в начало текстового файла BAT

Ответить
Настройки темы
CMD/BAT - Добавление строки в начало текстового файла BAT

Аватара для VPOISKE

Новый участник


Сообщения: 3
Благодарности: 1

Профиль | Отправить PM | Цитировать


Добрый день,

1 вопрос
Как объеденить два кода в один, чтобы не создавать несколько bat файлов?
Ниже приведенный код переименовывает любой файл находящийся по адресу C:\123\123 в file.txt
Код: Выделить весь код
@echo off
  pushd C:\123\123
     for /f "delims=" %%i in ('dir /a-d/b/s *.*') do ren "%%i" "file.txt"
  popd
exit /b

2 вопрос
У меня есть код который добавляет строку WORD,1234,A,B,C в начало текста. Однако после, в тексте появляется спецсивмол в конце всех строк (В notepad++ выглядит так ).
Пожалуйста помогите исправить код либо дополнить чтобы удалялся последний символ.

Код: Выделить весь код
set line=!line::=:00!
    
@echo off

pushd C:\123\123
    
for %%a in (file.txt) do (
     >>$ echo WORD,1234,A,B,C
     >nul (copy $+"%%a"& move $ "%%a")
   )
 
set xname=%xname:s=s%
  
exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:40, 22-10-2020

 

Аватара для VPOISKE

Новый участник


Сообщения: 3
Благодарности: 1

Профиль | Отправить PM | Цитировать



megaloman, Notepad ++ показывает, что это UTF-8

Прикрепил файл примера:
file.txt

Отправлено: 10:53, 22-10-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Contributor


Сообщения: 2703
Благодарности: 1683

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
	Set "Folder=Z:\Soft_In"
	Set "Mask=*.*"
	Set "Fname=file.txt"
	
	FOR %%f IN ("%Folder%\%Mask%") DO (
		If /I Not "%Fname%"=="%%~nxf" (
			>"%Temp%\%~nx0.tmp" (Echo WORD,1234,A,B,C)
			>nul Copy /B "%Temp%\%~nx0.tmp"+"%%f" "%%~dpf\%Fname%"
			Del "%%f" "%Temp%\%~nx0.tmp" 
			Exit /B
		)
	)
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:26, 22-10-2020 | #3


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Берём miniperl и вводим в консоли команду:
Код: Выделить весь код
miniperl -i.bak -pe "print \"WORD,1234,A,B,C\n\" if $.==1" Z:\Soft_In\file.txt
Заодно бэкап файла создадим таким образом.
Не нравится miniperl (хотя это ведь всего-навсего один единственный бинарник), можно взять miniruby - комадна будет в точности такой же.
Код: Выделить весь код
miniruby -i.bak -pe "print \"WORD,1234,A,B,C\n\" if $.==1" Z:\Soft_In\file.txt
Не нравится ни то, ни другое, - берём pwsh:
Код: Выделить весь код
$$=,'WORD,1234,A,B,C'+(gc Z:\Soft_In\file.txt);$$>Z:\Soft_In\file.txt
Не пришёлся по вкусу pwsh? - используем sed:
Код: Выделить весь код
sed -i.bak "1i\WORD,1234,A,B,C" Z:\Soft_In\file.txt

Последний раз редактировалось greg zakharov, 22-10-2020 в 21:12.


Отправлено: 20:58, 22-10-2020 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата VPOISKE:
Ниже приведенный код переименовывает любой файл находящийся по адресу C:\123\123 в file.txt »
Вообще-то, нет. Он пытается переименовать все файлы в указанном каталоге в file.txt.

Отправлено: 01:16, 23-10-2020 | #5


Ветеран


Contributor


Сообщения: 2703
Благодарности: 1683

Профиль | Отправить PM | Цитировать


Цитата VPOISKE:
Ниже приведенный код переименовывает любой файл находящийся по адресу C:\123\123 в file.txt »
Цитата Iska:
Вообще-то, нет. Он пытается переименовать все файлы в указанном каталоге в file.txt. »
Вообще-то да. Но тут становится все интереснее и интереснее, так как постановка задачи не очень четкая. Естественно, будет переименован только один файл (ren не позволит сделать больше), да и то, при условии, что в папке нет уже file.txt. А если есть, что делать?
Я нафантазировал такой вариант: не обращая внимания, есть ли файл file.txt или нет, беру другой файл, объединяю его с файлом с добавочной строкой, обзываю его file.txt, естественно при этом, если такой файл уже был, он будет переписан, а далее убиваю исходный файл.
Если в папке один и только один file.txt, он обработан не будет.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 09:42, 23-10-2020 | #6


Аватара для VPOISKE

Новый участник


Сообщения: 3
Благодарности: 1

Профиль | Отправить PM | Цитировать


megaloman, Примите благодарность от меня, это ровно то, что мне было нужно! Спасибо!

Отправлено: 08:27, 24-10-2020 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Добавление строки в начало текстового файла BAT

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Массовое добавление одной строки из текстового списка в каждый текстовый файл в папке Ds444 Скриптовые языки администрирования Windows 23 22-03-2019 22:32
CMD/BAT - Записать название файла в начало текстового файла krambrige Скриптовые языки администрирования Windows 3 15-12-2018 17:23
CMD/BAT - [решено] Добавление строки после каждой строки с подстановкой значения в имя файла d22cva Скриптовые языки администрирования Windows 5 05-01-2015 07:50
CMD/BAT - [решено] Добавление текущей даты в начало имени файла Orlov_Pyotr Скриптовые языки администрирования Windows 6 27-02-2013 13:30
Разное - Добавление имени файла в начало каждой строки. CkapHa Программирование и базы данных 2 02-01-2012 22:13




 
Переход